comparison packages/kernel/current/tests/kflag1.c @ 112:02ea4320376c ecos-sw-2000-07-21

Merge from eCos master repository on 2000-07-21-21:01:39-BST
author jlarmour
date Fri, 21 Jul 2000 21:34:11 +0000
parents bf00f99aec69
children e0c0827131d1
comparison
equal deleted inserted replaced
111:211b8a635ce9 112:02ea4320376c
61 #ifdef CYGFUN_KERNEL_THREADS_TIMER 61 #ifdef CYGFUN_KERNEL_THREADS_TIMER
62 static cyg_flag_t f2; 62 static cyg_flag_t f2;
63 #endif 63 #endif
64 64
65 static volatile cyg_ucount8 q = 0; 65 static volatile cyg_ucount8 q = 0;
66 #define FIRST_THREAD_WAIT_TIME 5
67 #define SECOND_THREAD_WAIT_TIME 10
68 #define THIRD_THREAD_WAIT_TIME 20
66 69
67 static void entry0( cyg_addrword_t data ) 70 static void entry0( cyg_addrword_t data )
68 { 71 {
69 CYG_TEST_INFO("Testing cyg_flag_setbits() and cyg_flag_maskbits()"); 72 CYG_TEST_INFO("Testing cyg_flag_setbits() and cyg_flag_maskbits()");
70 CYG_TEST_CHECK(0==cyg_flag_peek( &f0 ), "flag not initialized properly"); 73 CYG_TEST_CHECK(0==cyg_flag_peek( &f0 ), "flag not initialized properly");
96 99
97 #ifdef CYGFUN_KERNEL_THREADS_TIMER 100 #ifdef CYGFUN_KERNEL_THREADS_TIMER
98 cyg_flag_wait( &f2, 0x2, CYG_FLAG_WAITMODE_OR); 101 cyg_flag_wait( &f2, 0x2, CYG_FLAG_WAITMODE_OR);
99 CYG_TEST_CHECK(20==q,"bad synchronization"); 102 CYG_TEST_CHECK(20==q,"bad synchronization");
100 cyg_flag_timed_wait( &f2, 0x10, CYG_FLAG_WAITMODE_AND, 103 cyg_flag_timed_wait( &f2, 0x10, CYG_FLAG_WAITMODE_AND,
101 cyg_current_time()+20); 104 cyg_current_time()+THIRD_THREAD_WAIT_TIME);
102 CYG_TEST_CHECK(21==q++,"bad synchronization"); 105 CYG_TEST_CHECK(21==q++,"bad synchronization");
103 #endif 106 #endif
104 cyg_flag_wait( &f0, 1, CYG_FLAG_WAITMODE_OR); 107 cyg_flag_wait( &f0, 1, CYG_FLAG_WAITMODE_OR);
105 108
106 CYG_TEST_FAIL_FINISH("Not reached"); 109 CYG_TEST_FAIL_FINISH("Not reached");
157 CYG_TEST_INFO("Testing cyg_flag_timed_wait()"); 160 CYG_TEST_INFO("Testing cyg_flag_timed_wait()");
158 q=20; 161 q=20;
159 cyg_flag_setbits( &f2, 0x2); // synchronize with t0,t2 162 cyg_flag_setbits( &f2, 0x2); // synchronize with t0,t2
160 CYG_TEST_CHECK(20==q,"bad synchronization"); 163 CYG_TEST_CHECK(20==q,"bad synchronization");
161 cyg_flag_timed_wait( &f2, 0x20, CYG_FLAG_WAITMODE_AND, 164 cyg_flag_timed_wait( &f2, 0x20, CYG_FLAG_WAITMODE_AND,
162 cyg_current_time()+10); 165 cyg_current_time()+SECOND_THREAD_WAIT_TIME);
163 CYG_TEST_CHECK(22==q++,"bad synchronization"); 166 CYG_TEST_CHECK(22==q++,"bad synchronization");
164 #endif 167 #endif
165 168
166 CYG_TEST_PASS_FINISH("Kernel C API Flag 1 OK"); 169 CYG_TEST_PASS_FINISH("Kernel C API Flag 1 OK");
167 } 170 }
174 cyg_flag_wait( &f1, 0x11, CYG_FLAG_WAITMODE_AND | CYG_FLAG_WAITMODE_CLR); 177 cyg_flag_wait( &f1, 0x11, CYG_FLAG_WAITMODE_AND | CYG_FLAG_WAITMODE_CLR);
175 #ifdef CYGFUN_KERNEL_THREADS_TIMER 178 #ifdef CYGFUN_KERNEL_THREADS_TIMER
176 cyg_flag_wait( &f2, 0x2, CYG_FLAG_WAITMODE_OR); 179 cyg_flag_wait( &f2, 0x2, CYG_FLAG_WAITMODE_OR);
177 CYG_TEST_CHECK(20==q,"bad synchronization"); 180 CYG_TEST_CHECK(20==q,"bad synchronization");
178 CYG_TEST_CHECK(0==cyg_flag_timed_wait( &f2, 0x40, CYG_FLAG_WAITMODE_AND, 181 CYG_TEST_CHECK(0==cyg_flag_timed_wait( &f2, 0x40, CYG_FLAG_WAITMODE_AND,
179 cyg_current_time()+2), 182 cyg_current_time()+FIRST_THREAD_WAIT_TIME),
180 "timed wait() wrong"); 183 "timed wait() wrong");
181 CYG_TEST_CHECK(20==q++,"bad synchronization"); 184 CYG_TEST_CHECK(20==q++,"bad synchronization");
182 // Now wake t0 before it times out 185 // Now wake t0 before it times out
183 cyg_flag_setbits( &f2, 0x10); 186 cyg_flag_setbits( &f2, 0x10);
184 #endif 187 #endif