Mercurial > ecos
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 |
