diff --git a/cpukit/ChangeLog b/cpukit/ChangeLog index ecebd29ec4..e3316c2935 100644 --- a/cpukit/ChangeLog +++ b/cpukit/ChangeLog @@ -1,3 +1,8 @@ +2008-01-23 Joel Sherrill + + * score/src/threadblockingoperationcancel.c: Clean up. + * score/src/threadqextract.c: Restructure to eliminate dead code. + 2008-01-22 Joel Sherrill * rtems/src/eventsurrender.c, rtems/src/ratemonperiod.c, diff --git a/cpukit/score/src/threadblockingoperationcancel.c b/cpukit/score/src/threadblockingoperationcancel.c index b2b7a22745..82366af144 100644 --- a/cpukit/score/src/threadblockingoperationcancel.c +++ b/cpukit/score/src/threadblockingoperationcancel.c @@ -53,13 +53,17 @@ void _Thread_blocking_operation_Cancel( } #endif + /* + * The thread is not waiting on anything after this completes. + */ + the_thread->Wait.queue = NULL; + /* * If the sync state is timed out, this is very likely not needed. * But better safe than sorry when it comes to critical sections. */ if ( _Watchdog_Is_active( &the_thread->Timer ) ) { _Watchdog_Deactivate( &the_thread->Timer ); - the_thread->Wait.queue = NULL; _ISR_Enable( level ); (void) _Watchdog_Remove( &the_thread->Timer ); } else diff --git a/cpukit/score/src/threadqextract.c b/cpukit/score/src/threadqextract.c index f971a7b970..21aa2c2a46 100644 --- a/cpukit/score/src/threadqextract.c +++ b/cpukit/score/src/threadqextract.c @@ -46,12 +46,13 @@ void _Thread_queue_Extract( Thread_Control *the_thread ) { - switch ( the_thread_queue->discipline ) { - case THREAD_QUEUE_DISCIPLINE_FIFO: - _Thread_queue_Extract_fifo( the_thread_queue, the_thread ); - break; - case THREAD_QUEUE_DISCIPLINE_PRIORITY: - _Thread_queue_Extract_priority( the_thread_queue, the_thread ); - break; - } + /* + * Can not use indirect function pointer here since Extract priority + * is a macro and the underlying methods do not have the same signature. + */ + if ( the_thread_queue->discipline == THREAD_QUEUE_DISCIPLINE_PRIORITY ) + _Thread_queue_Extract_priority( the_thread_queue, the_thread ); + else /* must be THREAD_QUEUE_DISCIPLINE_FIFO */ + _Thread_queue_Extract_fifo( the_thread_queue, the_thread ); + }