summaryrefslogtreecommitdiffstats
path: root/cpukit/score/src/threadqenqueuefifo.c
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>2007-03-05 21:01:40 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>2007-03-05 21:01:40 +0000
commit96d0b64c620a2107a5d6b076a17ab26fca6b2a39 (patch)
tree1abb8637b91640982eff0d1d3a4f64e624182cca /cpukit/score/src/threadqenqueuefifo.c
parent2007-03-05 Joel Sherrill <joel@OARcorp.com> (diff)
downloadrtems-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/threadqenqueuefifo.c')
-rw-r--r--cpukit/score/src/threadqenqueuefifo.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/cpukit/score/src/threadqenqueuefifo.c b/cpukit/score/src/threadqenqueuefifo.c
index b4cba6a532..c7260807ed 100644
--- a/cpukit/score/src/threadqenqueuefifo.c
+++ b/cpukit/score/src/threadqenqueuefifo.c
@@ -67,17 +67,20 @@ void _Thread_queue_Enqueue_fifo (
&the_thread_queue->Queues.Fifo,
&the_thread->Object.Node
);
+ the_thread->Wait.queue = the_thread_queue;
_ISR_Enable( level );
return;
case THREAD_QUEUE_TIMEOUT:
the_thread->Wait.return_code = the_thread->Wait.queue->timeout_status;
+ the_thread->Wait.queue = NULL;
_ISR_Enable( level );
break;
case THREAD_QUEUE_SATISFIED:
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