From 33e250c9fa370f620ddbc5850342d5a90b123524 Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Fri, 27 May 2016 15:41:41 +0200 Subject: score: Rework CORE priority ceiling mutex Rework seize and surrender methods to use CORE_ceiling_mutex_Control. This eliminates CORE_mutex_Disciplines. --- cpukit/rtems/src/semrelease.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) (limited to 'cpukit/rtems/src/semrelease.c') 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, -- cgit v1.2.3