diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2016-05-27 15:41:41 +0200 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2016-05-30 16:16:23 +0200 |
commit | 33e250c9fa370f620ddbc5850342d5a90b123524 (patch) | |
tree | a2f4082a58231054f084e9a77aa0af4e3111662d /cpukit/rtems/src/semrelease.c | |
parent | score: Add CORE mutex variants (diff) | |
download | rtems-33e250c9fa370f620ddbc5850342d5a90b123524.tar.bz2 |
score: Rework CORE priority ceiling mutex
Rework seize and surrender methods to use CORE_ceiling_mutex_Control.
This eliminates CORE_mutex_Disciplines.
Diffstat (limited to 'cpukit/rtems/src/semrelease.c')
-rw-r--r-- | cpukit/rtems/src/semrelease.c | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/cpukit/rtems/src/semrelease.c b/cpukit/rtems/src/semrelease.c index 7cd92cfe0d..d92197b8f4 100644 --- a/cpukit/rtems/src/semrelease.c +++ b/cpukit/rtems/src/semrelease.c @@ -28,6 +28,7 @@ rtems_status_code rtems_semaphore_release( rtems_id id ) { Semaphore_Control *the_semaphore; Thread_queue_Context queue_context; + Thread_Control *executing; Status_Control status; the_semaphore = _Semaphore_Get( id, &queue_context ); @@ -40,6 +41,8 @@ rtems_status_code rtems_semaphore_release( rtems_id id ) #endif } + executing = _Thread_Executing; + _Thread_queue_Context_set_MP_callout( &queue_context, _Semaphore_Core_mutex_mp_support @@ -50,7 +53,7 @@ rtems_status_code rtems_semaphore_release( rtems_id id ) case SEMAPHORE_VARIANT_MRSP: status = _MRSP_Surrender( &the_semaphore->Core_control.mrsp, - _Thread_Executing, + executing, &queue_context ); break; @@ -61,6 +64,13 @@ rtems_status_code rtems_semaphore_release( rtems_id id ) &queue_context ); break; + case SEMAPHORE_VARIANT_MUTEX_PRIORITY_CEILING: + status = _CORE_ceiling_mutex_Surrender( + &the_semaphore->Core_control.Mutex, + executing, + &queue_context + ); + break; case SEMAPHORE_VARIANT_MUTEX_NO_PROTOCOL: _CORE_recursive_mutex_Surrender_no_protocol_classic( &the_semaphore->Core_control.Mutex.Recursive, |