diff options
author | Joel Sherrill <joel.sherrill@OARcorp.com> | 2006-07-11 21:05:12 +0000 |
---|---|---|
committer | Joel Sherrill <joel.sherrill@OARcorp.com> | 2006-07-11 21:05:12 +0000 |
commit | 83df49f697d770276c16af18884e2c4aeb393ab8 (patch) | |
tree | a8ad7983ebe4162b4768ab46edc7dd28df93fea0 /cpukit/score/src/coremutexseize.c | |
parent | fixed system.h: only include ATA/IDE driver, when BSP supports an ide interface (diff) | |
download | rtems-83df49f697d770276c16af18884e2c4aeb393ab8.tar.bz2 |
2006-07-11 Joel Sherrill <joel@OARcorp.com>
PR 1124/rtems
* score/include/rtems/score/threadq.h, score/src/coremutexseize.c,
score/src/coremutexsurrender.c, score/src/threadqenqueue.c,
score/src/threadqenqueuefifo.c, score/src/threadqenqueuepriority.c:
The placement of the changing a thread's priority when using priority
ceiling should be on the successful transfer of the mutex -- not when
the thread tries to acquire. Plus the lack of a dispatch disable
point lead to the potential for a thread timing out and already
having inherited the ceiling priority.
Diffstat (limited to 'cpukit/score/src/coremutexseize.c')
-rw-r--r-- | cpukit/score/src/coremutexseize.c | 18 |
1 files changed, 1 insertions, 17 deletions
diff --git a/cpukit/score/src/coremutexseize.c b/cpukit/score/src/coremutexseize.c index cd620c3e9d..6b04d200ac 100644 --- a/cpukit/score/src/coremutexseize.c +++ b/cpukit/score/src/coremutexseize.c @@ -6,7 +6,7 @@ * This package is the implementation of the Mutex Handler. * This handler provides synchronization and mutual exclusion capabilities. * - * 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,22 +60,6 @@ void _CORE_mutex_Seize_interrupt_blocking( the_mutex->blocked_count++; _Thread_queue_Enqueue( &the_mutex->Wait_queue, timeout ); - if ( _Thread_Executing->Wait.return_code == CORE_MUTEX_STATUS_SUCCESSFUL ) { - /* - * if CORE_MUTEX_DISCIPLINES_PRIORITY_INHERIT then nothing to do - * because this task is already the highest priority. - */ - - if ( _CORE_mutex_Is_priority_ceiling( &the_mutex->Attributes ) ) { - if (the_mutex->Attributes.priority_ceiling < executing->current_priority){ - _Thread_Change_priority( - executing, - the_mutex->Attributes.priority_ceiling, - FALSE - ); - } - } - } _Thread_Enable_dispatch(); } |