Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependents: blinky_max32630fthr
main.cpp
00001 #include "mbed.h" 00002 #include "test_env.h" 00003 #include "rtos.h" 00004 00005 #if defined(MBED_RTOS_SINGLE_THREAD) 00006 #error [NOT_SUPPORTED] test not supported 00007 #endif 00008 00009 #define NUM_THREADS 5 00010 #define THREAD_STACK_SIZE 256 00011 00012 DigitalOut led1(LED1); 00013 volatile bool should_exit = false; 00014 volatile bool allocation_failure = false; 00015 00016 void task_using_malloc(void) 00017 { 00018 void* data; 00019 while (1) { 00020 // Repeatedly allocate and free memory 00021 data = malloc(100); 00022 if (data != NULL) { 00023 memset(data, 0, 100); 00024 } else { 00025 allocation_failure = true; 00026 } 00027 free(data); 00028 00029 if (should_exit) { 00030 return; 00031 } 00032 } 00033 } 00034 00035 int main() 00036 { 00037 Thread *thread_list[NUM_THREADS]; 00038 int test_time = 15; 00039 GREENTEA_SETUP(20, "default_auto"); 00040 00041 // Allocate threads for the test 00042 for (int i = 0; i < NUM_THREADS; i++) { 00043 thread_list[i] = new Thread(osPriorityNormal, THREAD_STACK_SIZE); 00044 if (NULL == thread_list[i]) { 00045 allocation_failure = true; 00046 } 00047 thread_list[i]->start(task_using_malloc); 00048 } 00049 00050 // Give the test time to run 00051 while (test_time) { 00052 led1 = !led1; 00053 Thread::wait(1000); 00054 test_time--; 00055 } 00056 00057 // Join and delete all threads 00058 should_exit = 1; 00059 for (int i = 0; i < NUM_THREADS; i++) { 00060 if (NULL == thread_list[i]) { 00061 continue; 00062 } 00063 thread_list[i]->join(); 00064 delete thread_list[i]; 00065 } 00066 00067 GREENTEA_TESTSUITE_RESULT(!allocation_failure); 00068 }
Generated on Tue Jul 12 2022 14:21:14 by
1.7.2
