comparison packages/kernel/current/src/sync/flag.cxx @ 115:6ed91473a1cd ecos-sw-2000-08-21

Merge from eCos master repository on 2000-08-21-22:40:54-BST
author jlarmour
date Fri, 25 Aug 2000 17:32:38 +0000
parents bf00f99aec69
children e0c0827131d1
comparison
equal deleted inserted replaced
114:5ad2b71d525e 115:6ed91473a1cd
240 self->set_sleep_reason( Cyg_Thread::WAIT ); 240 self->set_sleep_reason( Cyg_Thread::WAIT );
241 self->sleep(); 241 self->sleep();
242 // keep track of myself on the queue of waiting threads 242 // keep track of myself on the queue of waiting threads
243 queue.enqueue( self ); 243 queue.enqueue( self );
244 244
245 CYG_ASSERT( 1 == Cyg_Scheduler::get_sched_lock(), 245 // Allow other threads to run
246 "Called with non-zero scheduler lock"); 246 Cyg_Scheduler::reschedule();
247
248 // Unlock scheduler and allow other threads to run
249 Cyg_Scheduler::unlock();
250 Cyg_Scheduler::lock();
251 247
252 CYG_ASSERT( ((CYG_ADDRWORD)&saveme) == 248 CYG_ASSERT( ((CYG_ADDRWORD)&saveme) ==
253 Cyg_Thread::self()->get_wait_info(), 249 Cyg_Thread::self()->get_wait_info(),
254 "Wait info lost" ); 250 "Wait info lost" );
255 251
331 self->set_sleep_reason( Cyg_Thread::TIMEOUT ); 327 self->set_sleep_reason( Cyg_Thread::TIMEOUT );
332 self->sleep(); 328 self->sleep();
333 // keep track of myself on the queue of waiting threads 329 // keep track of myself on the queue of waiting threads
334 queue.enqueue( self ); 330 queue.enqueue( self );
335 331
336 CYG_ASSERT( 1 == Cyg_Scheduler::get_sched_lock(), 332 // Allow other threads to run
337 "Called with non-zero scheduler lock"); 333 Cyg_Scheduler::reschedule();
338
339 // Unlock scheduler and allow other threads to run
340 Cyg_Scheduler::unlock();
341 Cyg_Scheduler::lock();
342 334
343 CYG_ASSERT( ((CYG_ADDRWORD)&saveme) == 335 CYG_ASSERT( ((CYG_ADDRWORD)&saveme) ==
344 Cyg_Thread::self()->get_wait_info(), 336 Cyg_Thread::self()->get_wait_info(),
345 "Wait info lost" ); 337 "Wait info lost" );
346 338