CGUIformatVersion 1.880000 DEFINE_DEVICE_TYPE: TEST_RESUME_WPARAM DOCUMENTATION: /*************************************************/ /* This device tests the RESUME_WITH_PARAM() */ /* function. It generates several "potential" */ /* "wakers" who are scheduled to resume at */ /* various times, - each being uniquely */ /* identified by an integer. Upon waking, the */ /* awoken thread will identify the resumer. */ /* Expected result is: 2, 1, 3, 5, 4. */ /*************************************************/ END_DOCUMENTATION. /* Local shared variables. */ SYNCHRON *A; DEFINE_THREAD: start_up { char *msg; A = NEW_SYNCHRON(); TRIGGER_THREAD( waker, 9.0, "1" ); TRIGGER_THREAD( waker, 7.0, "2" ); TRIGGER_THREAD( waker, 19.0, "3" ); TRIGGER_THREAD( waker, 29.0, "4" ); TRIGGER_THREAD( waker, 25.0, "5" ); while (1) { msg = (char *)WAIT( &A, NONQUEUABLE ); csim_printf("Awoke with %s\n", msg ); } } END_DEFINE_THREAD. DEFINE_THREAD: waker { RESUME_WITH_PARAM( &A, NONQUEUABLE, (void *)THREAD_VAR ); } END_DEFINE_THREAD. END_DEFINE_DEVICE_TYPE. top_level new = TEST_RESUME_WPARAM 1.200000 1.400000 8.600000 7.200000