int main() { MBED_HOSTTEST_TIMEOUT(20); MBED_HOSTTEST_SELECT(default); MBED_HOSTTEST_DESCRIPTION(Mutex resource lock); MBED_HOSTTEST_START("RTOS_2"); const int t1_delay = THREAD_DELAY * 1; const int t2_delay = THREAD_DELAY * 2; const int t3_delay = THREAD_DELAY * 3; Thread t2(test_thread, (void *)t2_delay, osPriorityNormal, STACK_SIZE); Thread t3(test_thread, (void *)t3_delay, osPriorityNormal, STACK_SIZE); while (true) { // Thread 1 action Thread::wait(t1_delay); manipulate_protected_zone(t1_delay); if (change_counter >= SIGNALS_TO_EMIT or mutex_defect == true) { t2.terminate(); t3.terminate(); break; } } fflush(stdout); MBED_HOSTTEST_RESULT(!mutex_defect); return 0; }
int main() { const int t1_delay = THREAD_DELAY * 1; const int t2_delay = THREAD_DELAY * 2; const int t3_delay = THREAD_DELAY * 3; Thread t2(test_thread, (void *)t2_delay); Thread t3(test_thread, (void *)t3_delay); while (true) { // Thread 1 action Thread::wait(t1_delay); manipulate_protected_zone(t1_delay); if (change_counter >= SIGNALS_TO_EMIT or mutex_defect == true) { t2.terminate(); t3.terminate(); break; } } fflush(stdout); notify_completion(!mutex_defect); return 0; }
int main() { GREENTEA_SETUP(20, "default_auto"); const int t1_delay = THREAD_DELAY * 1; const int t2_delay = THREAD_DELAY * 2; const int t3_delay = THREAD_DELAY * 3; Thread t2(test_thread, (void *)t2_delay, osPriorityNormal, STACK_SIZE); Thread t3(test_thread, (void *)t3_delay, osPriorityNormal, STACK_SIZE); while (true) { // Thread 1 action Thread::wait(t1_delay); manipulate_protected_zone(t1_delay); if (change_counter >= SIGNALS_TO_EMIT or mutex_defect == true) { t2.terminate(); t3.terminate(); break; } } fflush(stdout); GREENTEA_TESTSUITE_RESULT(!mutex_defect); return 0; }
void test_thread(void const *args) { const int thread_delay = int(args); while (true) { manipulate_protected_zone(thread_delay); } }