diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2016-09-23 11:29:48 +0200 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2016-09-27 07:39:03 +0200 |
commit | 94d5b390e58eb562fbfba4c1a28052a663f13e42 (patch) | |
tree | 4c12d5fb30a624979fbe0cb6a19367fcf92ee344 /cpukit/score/src/coremutexseize.c | |
parent | score: Fix warning (diff) | |
download | rtems-94d5b390e58eb562fbfba4c1a28052a663f13e42.tar.bz2 |
score: Simplify CORE mutex seize
Rename _CORE_mutex_Seize_no_protocol_slow() in _CORE_mutex_Seize_slow().
Remove previous _CORE_mutex_Seize_slow() since the protocol handling is
now done in the thread queue operations.
Diffstat (limited to '')
-rw-r--r-- | cpukit/score/src/coremutexseize.c | 59 |
1 files changed, 0 insertions, 59 deletions
diff --git a/cpukit/score/src/coremutexseize.c b/cpukit/score/src/coremutexseize.c index 89b5c56a83..01a5ffb9a5 100644 --- a/cpukit/score/src/coremutexseize.c +++ b/cpukit/score/src/coremutexseize.c @@ -24,65 +24,6 @@ #include <rtems/score/watchdog.h> Status_Control _CORE_mutex_Seize_slow( - CORE_mutex_Control *the_mutex, - Thread_Control *executing, - Thread_Control *owner, - bool wait, - Thread_queue_Context *queue_context -) -{ - if ( !wait ) { - _CORE_mutex_Release( the_mutex, queue_context ); - return STATUS_UNAVAILABLE; - } - -#if !defined(RTEMS_SMP) - /* - * We must disable thread dispatching here since we enable the interrupts for - * priority inheritance mutexes. - */ - _Thread_Dispatch_disable(); - - /* - * To enable interrupts here works only since exactly one executing thread - * exists and only threads are allowed to seize and surrender mutexes with - * the priority inheritance protocol. On SMP configurations more than one - * executing thread may exist, so here we must not release the lock, since - * otherwise the current owner may be no longer the owner of the mutex - * once we released the lock. - */ - _CORE_mutex_Release( the_mutex, queue_context ); -#endif - -#if defined(RTEMS_SMP) - _Thread_queue_Context_set_expected_level( queue_context, 1 ); -#else - _ISR_lock_ISR_disable( &queue_context->Lock_context.Lock_context ); - _CORE_mutex_Acquire_critical( the_mutex, queue_context ); - _Thread_queue_Context_set_expected_level( queue_context, 2 ); -#endif - - _Thread_queue_Context_set_deadlock_callout( - queue_context, - _Thread_queue_Deadlock_status - ); - - _Thread_queue_Enqueue_critical( - &the_mutex->Wait_queue.Queue, - CORE_MUTEX_TQ_PRIORITY_INHERIT_OPERATIONS, - executing, - STATES_WAITING_FOR_MUTEX, - queue_context - ); - -#if !defined(RTEMS_SMP) - _Thread_Dispatch_enable( _Per_CPU_Get() ); -#endif - - return _Thread_Wait_get_status( executing ); -} - -Status_Control _CORE_mutex_Seize_no_protocol_slow( CORE_mutex_Control *the_mutex, const Thread_queue_Operations *operations, Thread_Control *executing, |