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/threadclearstate.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/threadclearstate.c')
-rw-r--r-- | cpukit/score/src/threadclearstate.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/cpukit/score/src/threadclearstate.c b/cpukit/score/src/threadclearstate.c index bb7deffe06..8a175fd8cd 100644 --- a/cpukit/score/src/threadclearstate.c +++ b/cpukit/score/src/threadclearstate.c @@ -73,6 +73,12 @@ void _Thread_Clear_state( _ISR_Flash( level ); + /* + * If the thread that was unblocked is more important than the heir, + * then we have a new heir. In addition, if the current thread + * is preemptible or we are waking up one of the "pseudo-ISR" system + * threads, then we need to do a context switch. + */ if ( the_thread->current_priority < _Thread_Heir->current_priority ) { _Thread_Heir = the_thread; if ( _Thread_Executing->is_preemptible || |