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. */ /* */ /* 11-5-02 */ /*************************************************/ END_DOCUMENTATION. /* Local shared variables. */ SYNCHRON *A; DEFINE_THREAD: start_up { int m; 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) { m = (int)WAIT( &A, NONQUEUABLE ); csim_printf("Awoke with %d\n", m); } } 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