diff options
Diffstat (limited to 'cpukit/score/src/threadqextract.c')
-rw-r--r-- | cpukit/score/src/threadqextract.c | 22 |
1 files changed, 6 insertions, 16 deletions
diff --git a/cpukit/score/src/threadqextract.c b/cpukit/score/src/threadqextract.c index bc7d34686a..d12d3c889a 100644 --- a/cpukit/score/src/threadqextract.c +++ b/cpukit/score/src/threadqextract.c @@ -48,24 +48,14 @@ void _Thread_queue_Extract_with_return_code( ); } - the_thread->Wait.queue = NULL; the_thread->Wait.return_code = return_code; - if ( !_Watchdog_Is_active( &the_thread->Timer ) ) { - _ISR_Enable( level ); - } else { - _Watchdog_Deactivate( &the_thread->Timer ); - _ISR_Enable( level ); - (void) _Watchdog_Remove( &the_thread->Timer ); - } - - _Thread_Unblock( the_thread ); - -#if defined(RTEMS_MULTIPROCESSING) - if ( !_Objects_Is_local_id( the_thread->Object.id ) ) - _Thread_MP_Free_proxy( the_thread ); -#endif - + /* + * We found a thread to unblock. + * + * NOTE: This is invoked with interrupts still disabled. + */ + _Thread_blocking_operation_Finalize( the_thread, level ); } void _Thread_queue_Extract( |