diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2016-11-17 07:40:05 +0100 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2016-11-18 07:30:36 +0100 |
commit | 142628edcd9fc091ce02246a761d5d5100f22ca3 (patch) | |
tree | 5178ed9dbd302bf2ff9d352b4d93fd5e50e0fae9 /cpukit/score/src/mutex.c | |
parent | score: Constify _MRSP_Get_owner() (diff) | |
download | rtems-142628edcd9fc091ce02246a761d5d5100f22ca3.tar.bz2 |
score: Optimize self-contained objects
Avoid use of the stack for the hot paths.
Diffstat (limited to 'cpukit/score/src/mutex.c')
-rw-r--r-- | cpukit/score/src/mutex.c | 34 |
1 files changed, 10 insertions, 24 deletions
diff --git a/cpukit/score/src/mutex.c b/cpukit/score/src/mutex.c index 4700563bf6..4e1d9ceae4 100644 --- a/cpukit/score/src/mutex.c +++ b/cpukit/score/src/mutex.c @@ -71,14 +71,6 @@ static Mutex_Control *_Mutex_Get( struct _Mutex_Control *_mutex ) return (Mutex_Control *) _mutex; } -#define _Mutex_ISR_disable( level, queue_context ) \ - do { \ - _ISR_Local_disable( level ); \ - _ISR_lock_ISR_disable_profile( \ - &( queue_context )->Lock_context.Lock_context \ - ) \ - } while ( 0 ) - static Thread_Control *_Mutex_Queue_acquire_critical( Mutex_Control *mutex, Thread_queue_Context *queue_context @@ -122,10 +114,7 @@ static void _Mutex_Acquire_slow( queue_context, _Thread_queue_Deadlock_fatal ); - _ISR_lock_Context_set_level( - &queue_context->Lock_context.Lock_context, - level - ); + _Thread_queue_Context_set_ISR_level( queue_context, level ); _Thread_queue_Enqueue_critical( &mutex->Queue.Queue, MUTEX_TQ_OPERATIONS, @@ -151,10 +140,7 @@ static void _Mutex_Release_critical( if ( __predict_true( heads == NULL ) ) { _Mutex_Queue_release( mutex, level, queue_context ); } else { - _ISR_lock_Context_set_level( - &queue_context->Lock_context.Lock_context, - level - ); + _Thread_queue_Context_set_ISR_level( queue_context, level ); _Thread_queue_Surrender( &mutex->Queue.Queue, heads, @@ -175,7 +161,7 @@ void _Mutex_Acquire( struct _Mutex_Control *_mutex ) mutex = _Mutex_Get( _mutex ); _Thread_queue_Context_initialize( &queue_context ); - _Mutex_ISR_disable( level, &queue_context ); + _Thread_queue_Context_ISR_disable( &queue_context, level ); executing = _Mutex_Queue_acquire_critical( mutex, &queue_context ); owner = mutex->Queue.Queue.owner; @@ -203,7 +189,7 @@ int _Mutex_Acquire_timed( mutex = _Mutex_Get( _mutex ); _Thread_queue_Context_initialize( &queue_context ); - _Mutex_ISR_disable( level, &queue_context ); + _Thread_queue_Context_ISR_disable( &queue_context, level ); executing = _Mutex_Queue_acquire_critical( mutex, &queue_context ); owner = mutex->Queue.Queue.owner; @@ -247,7 +233,7 @@ int _Mutex_Try_acquire( struct _Mutex_Control *_mutex ) mutex = _Mutex_Get( _mutex ); _Thread_queue_Context_initialize( &queue_context ); - _Mutex_ISR_disable( level, &queue_context ); + _Thread_queue_Context_ISR_disable( &queue_context, level ); executing = _Mutex_Queue_acquire_critical( mutex, &queue_context ); owner = mutex->Queue.Queue.owner; @@ -274,7 +260,7 @@ void _Mutex_Release( struct _Mutex_Control *_mutex ) mutex = _Mutex_Get( _mutex ); _Thread_queue_Context_initialize( &queue_context ); - _Mutex_ISR_disable( level, &queue_context ); + _Thread_queue_Context_ISR_disable( &queue_context, level ); executing = _Mutex_Queue_acquire_critical( mutex, &queue_context ); _Assert( mutex->Queue.Queue.owner == executing ); @@ -299,7 +285,7 @@ void _Mutex_recursive_Acquire( struct _Mutex_recursive_Control *_mutex ) mutex = _Mutex_recursive_Get( _mutex ); _Thread_queue_Context_initialize( &queue_context ); - _Mutex_ISR_disable( level, &queue_context ); + _Thread_queue_Context_ISR_disable( &queue_context, level ); executing = _Mutex_Queue_acquire_critical( &mutex->Mutex, &queue_context ); owner = mutex->Mutex.Queue.Queue.owner; @@ -330,7 +316,7 @@ int _Mutex_recursive_Acquire_timed( mutex = _Mutex_recursive_Get( _mutex ); _Thread_queue_Context_initialize( &queue_context ); - _Mutex_ISR_disable( level, &queue_context ); + _Thread_queue_Context_ISR_disable( &queue_context, level ); executing = _Mutex_Queue_acquire_critical( &mutex->Mutex, &queue_context ); owner = mutex->Mutex.Queue.Queue.owner; @@ -379,7 +365,7 @@ int _Mutex_recursive_Try_acquire( struct _Mutex_recursive_Control *_mutex ) mutex = _Mutex_recursive_Get( _mutex ); _Thread_queue_Context_initialize( &queue_context ); - _Mutex_ISR_disable( level, &queue_context ); + _Thread_queue_Context_ISR_disable( &queue_context, level ); executing = _Mutex_Queue_acquire_critical( &mutex->Mutex, &queue_context ); owner = mutex->Mutex.Queue.Queue.owner; @@ -410,7 +396,7 @@ void _Mutex_recursive_Release( struct _Mutex_recursive_Control *_mutex ) mutex = _Mutex_recursive_Get( _mutex ); _Thread_queue_Context_initialize( &queue_context ); - _Mutex_ISR_disable( level, &queue_context ); + _Thread_queue_Context_ISR_disable( &queue_context, level ); executing = _Mutex_Queue_acquire_critical( &mutex->Mutex, &queue_context ); _Assert( mutex->Mutex.Queue.Queue.owner == executing ); |