summaryrefslogtreecommitdiffstats
path: root/cpukit/score
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>2008-01-23 13:07:13 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>2008-01-23 13:07:13 +0000
commit6b8da2b989ea6077f06ab35a819fc60bbdf7ee70 (patch)
tree14f19f1286263de52d480c7793dc17c2c8b30e3a /cpukit/score
parent2008-01-23 Joel Sherrill <joel.sherrill@oarcorp.com> (diff)
downloadrtems-6b8da2b989ea6077f06ab35a819fc60bbdf7ee70.tar.bz2
2008-01-23 Joel Sherrill <joel.sherrill@oarcorp.com>
* score/src/threadblockingoperationcancel.c: Clean up. * score/src/threadqextract.c: Restructure to eliminate dead code.
Diffstat (limited to 'cpukit/score')
-rw-r--r--cpukit/score/src/threadblockingoperationcancel.c6
-rw-r--r--cpukit/score/src/threadqextract.c17
2 files changed, 14 insertions, 9 deletions
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
@@ -54,12 +54,16 @@ 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 );
+
}