diff options
author | Joel Sherrill <joel.sherrill@OARcorp.com> | 2007-03-05 21:01:40 +0000 |
---|---|---|
committer | Joel Sherrill <joel.sherrill@OARcorp.com> | 2007-03-05 21:01:40 +0000 |
commit | 96d0b64c620a2107a5d6b076a17ab26fca6b2a39 (patch) | |
tree | 1abb8637b91640982eff0d1d3a4f64e624182cca /cpukit/score/src/threadqenqueue.c | |
parent | 2007-03-05 Joel Sherrill <joel@OARcorp.com> (diff) | |
download | rtems-96d0b64c620a2107a5d6b076a17ab26fca6b2a39.tar.bz2 |
2007-03-05 Joel Sherrill <joel@OARcorp.com>
PR 1222/cpukit
* score/Makefile.am, score/include/rtems/score/coremutex.h,
score/include/rtems/score/threadq.h,
score/inline/rtems/score/coremutex.inl, score/src/coremsgsubmit.c,
score/src/coremutexsurrender.c, score/src/threadchangepriority.c,
score/src/threadclearstate.c, score/src/threadhandler.c,
score/src/threadinitialize.c, score/src/threadqdequeuefifo.c,
score/src/threadqdequeuepriority.c, score/src/threadqenqueue.c,
score/src/threadqenqueuefifo.c, score/src/threadqenqueuepriority.c,
score/src/threadqextractfifo.c, score/src/threadqextractpriority.c,
score/src/threadsetstate.c: Enhance so that when the prioirity of a
thread that is blocked on a priority based thread queue is changed,
that its placement in the queue is reevaluated based upon the new
priority. This enhancement includes modifications to the SuperCore as
well as new test cases.
* score/src/threadqrequeue.c: New file.
Diffstat (limited to 'cpukit/score/src/threadqenqueue.c')
-rw-r--r-- | cpukit/score/src/threadqenqueue.c | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/cpukit/score/src/threadqenqueue.c b/cpukit/score/src/threadqenqueue.c index 3cbf76800b..2cc1141993 100644 --- a/cpukit/score/src/threadqenqueue.c +++ b/cpukit/score/src/threadqenqueue.c @@ -2,7 +2,7 @@ * Thread Queue Handler * * - * COPYRIGHT (c) 1989-1999. + * COPYRIGHT (c) 1989-2006. * On-Line Applications Research Corporation (OAR). * * The license and distribution terms for this file may be @@ -60,8 +60,14 @@ void _Thread_queue_Enqueue_with_handler( the_thread = _Thread_MP_Allocate_proxy( the_thread_queue->state ); else #endif - _Thread_Set_state( the_thread, the_thread_queue->state ); + /* + * Set the blocking state for this thread queue in the thread. + */ + _Thread_Set_state( the_thread, the_thread_queue->state ); + /* + * If the thread wants to timeout, then schedule its timer. + */ if ( timeout ) { _Watchdog_Initialize( &the_thread->Timer, @@ -73,6 +79,9 @@ void _Thread_queue_Enqueue_with_handler( _Watchdog_Insert_ticks( &the_thread->Timer, timeout ); } + /* + * Now enqueue the thread per the discipline for this thread queue. + */ switch( the_thread_queue->discipline ) { case THREAD_QUEUE_DISCIPLINE_FIFO: _Thread_queue_Enqueue_fifo( the_thread_queue, the_thread ); |