diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2017-10-10 10:03:48 +0200 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2017-10-10 10:03:48 +0200 |
commit | db3a3decbd387a5f9bbac7089caa479c75589b74 (patch) | |
tree | c8009e93b4baa75b4faa6724d834911ef5c11291 /cpukit/score | |
parent | posix: Unconditional thread attribute support (diff) | |
download | rtems-db3a3decbd387a5f9bbac7089caa479c75589b74.tar.bz2 |
score: Add _Thread_queue_Dispatch_disable()
Diffstat (limited to 'cpukit/score')
-rw-r--r-- | cpukit/score/include/rtems/score/coremuteximpl.h | 4 | ||||
-rw-r--r-- | cpukit/score/include/rtems/score/mrspimpl.h | 4 | ||||
-rw-r--r-- | cpukit/score/include/rtems/score/threadqimpl.h | 10 | ||||
-rw-r--r-- | cpukit/score/src/threadqenqueue.c | 16 | ||||
-rw-r--r-- | cpukit/score/src/threadqflush.c | 4 |
5 files changed, 17 insertions, 21 deletions
diff --git a/cpukit/score/include/rtems/score/coremuteximpl.h b/cpukit/score/include/rtems/score/coremuteximpl.h index e524539419..78fafca6e1 100644 --- a/cpukit/score/include/rtems/score/coremuteximpl.h +++ b/cpukit/score/include/rtems/score/coremuteximpl.h @@ -305,9 +305,7 @@ RTEMS_INLINE_ROUTINE Status_Control _CORE_ceiling_mutex_Set_owner( ); _Thread_Wait_release_default_critical( owner, &lock_context ); - cpu_self = _Thread_Dispatch_disable_critical( - &queue_context->Lock_context.Lock_context - ); + cpu_self = _Thread_queue_Dispatch_disable( queue_context ); _CORE_mutex_Release( &the_mutex->Recursive.Mutex, queue_context ); _Thread_Priority_update( queue_context ); _Thread_Dispatch_enable( cpu_self ); diff --git a/cpukit/score/include/rtems/score/mrspimpl.h b/cpukit/score/include/rtems/score/mrspimpl.h index b9514160dc..b9c7441401 100644 --- a/cpukit/score/include/rtems/score/mrspimpl.h +++ b/cpukit/score/include/rtems/score/mrspimpl.h @@ -179,9 +179,7 @@ RTEMS_INLINE_ROUTINE Status_Control _MRSP_Claim_ownership( } _MRSP_Set_owner( mrsp, executing ); - cpu_self = _Thread_Dispatch_disable_critical( - &queue_context->Lock_context.Lock_context - ); + cpu_self = _Thread_queue_Dispatch_disable( queue_context ); _MRSP_Release( mrsp, queue_context ); _Thread_Priority_and_sticky_update( executing, 1 ); _Thread_Dispatch_enable( cpu_self ); diff --git a/cpukit/score/include/rtems/score/threadqimpl.h b/cpukit/score/include/rtems/score/threadqimpl.h index c4a22a5def..60067076c7 100644 --- a/cpukit/score/include/rtems/score/threadqimpl.h +++ b/cpukit/score/include/rtems/score/threadqimpl.h @@ -26,6 +26,7 @@ #include <rtems/score/smp.h> #include <rtems/score/status.h> #include <rtems/score/thread.h> +#include <rtems/score/threaddispatch.h> #if defined(RTEMS_DEBUG) #include <string.h> @@ -277,6 +278,15 @@ RTEMS_INLINE_ROUTINE void _Thread_queue_Context_set_ISR_level( ); } +RTEMS_INLINE_ROUTINE Per_CPU_Control *_Thread_queue_Dispatch_disable( + Thread_queue_Context *queue_context +) +{ + return _Thread_Dispatch_disable_critical( + &queue_context->Lock_context.Lock_context + ); +} + /** * @brief Sets the MP callout in the thread queue context. * diff --git a/cpukit/score/src/threadqenqueue.c b/cpukit/score/src/threadqenqueue.c index bf08d78b41..1f5a9c1660 100644 --- a/cpukit/score/src/threadqenqueue.c +++ b/cpukit/score/src/threadqenqueue.c @@ -445,9 +445,7 @@ void _Thread_queue_Enqueue( the_thread->Wait.return_code = STATUS_SUCCESSFUL; _Thread_Wait_flags_set( the_thread, THREAD_QUEUE_INTEND_TO_BLOCK ); - cpu_self = _Thread_Dispatch_disable_critical( - &queue_context->Lock_context.Lock_context - ); + cpu_self = _Thread_queue_Dispatch_disable( queue_context ); _Thread_queue_Queue_release( queue, &queue_context->Lock_context.Lock_context ); ( *queue_context->enqueue_callout )( queue, the_thread, queue_context ); @@ -513,9 +511,7 @@ Status_Control _Thread_queue_Enqueue_sticky( the_thread->Wait.return_code = STATUS_SUCCESSFUL; _Thread_Wait_flags_set( the_thread, THREAD_QUEUE_INTEND_TO_BLOCK ); - cpu_self = _Thread_Dispatch_disable_critical( - &queue_context->Lock_context.Lock_context - ); + cpu_self = _Thread_queue_Dispatch_disable( queue_context ); _Thread_queue_Queue_release( queue, &queue_context->Lock_context.Lock_context ); if ( cpu_self->thread_dispatch_disable_level != 1 ) { @@ -715,9 +711,7 @@ void _Thread_queue_Surrender( unblock = _Thread_queue_Make_ready_again( new_owner ); - cpu_self = _Thread_Dispatch_disable_critical( - &queue_context->Lock_context.Lock_context - ); + cpu_self = _Thread_queue_Dispatch_disable( queue_context ); _Thread_queue_Queue_release( queue, &queue_context->Lock_context.Lock_context @@ -756,9 +750,7 @@ void _Thread_queue_Surrender_sticky( queue->owner = new_owner; _Thread_queue_Make_ready_again( new_owner ); - cpu_self = _Thread_Dispatch_disable_critical( - &queue_context->Lock_context.Lock_context - ); + cpu_self = _Thread_queue_Dispatch_disable( queue_context ); _Thread_queue_Queue_release( queue, &queue_context->Lock_context.Lock_context diff --git a/cpukit/score/src/threadqflush.c b/cpukit/score/src/threadqflush.c index 6c9ca9801b..8135e67b62 100644 --- a/cpukit/score/src/threadqflush.c +++ b/cpukit/score/src/threadqflush.c @@ -115,9 +115,7 @@ size_t _Thread_queue_Flush_critical( if ( node != tail ) { Per_CPU_Control *cpu_self; - cpu_self = _Thread_Dispatch_disable_critical( - &queue_context->Lock_context.Lock_context - ); + cpu_self = _Thread_queue_Dispatch_disable( queue_context ); _Thread_queue_Queue_release( queue, &queue_context->Lock_context.Lock_context ); do { |