[PATCH 1/3] score: Add _Thread_queue_Dispatch_disable()
Sebastian Huber
sebastian.huber at embedded-brains.de
Tue Oct 10 09:38:38 UTC 2017
---
cpukit/posix/include/rtems/posix/muteximpl.h | 8 ++------
cpukit/posix/src/pthreadsetschedparam.c | 4 +---
cpukit/posix/src/pthreadsetschedprio.c | 4 +---
cpukit/rtems/src/semsetpriority.c | 4 +---
cpukit/rtems/src/taskdelete.c | 4 +---
cpukit/rtems/src/tasksetpriority.c | 4 +---
cpukit/rtems/src/tasksetscheduler.c | 5 +----
cpukit/score/include/rtems/score/coremuteximpl.h | 4 +---
cpukit/score/include/rtems/score/mrspimpl.h | 4 +---
cpukit/score/include/rtems/score/threadqimpl.h | 10 ++++++++++
cpukit/score/src/threadqenqueue.c | 16 ++++------------
cpukit/score/src/threadqflush.c | 4 +---
12 files changed, 25 insertions(+), 46 deletions(-)
diff --git a/cpukit/posix/include/rtems/posix/muteximpl.h b/cpukit/posix/include/rtems/posix/muteximpl.h
index 833938bb2d..f146e0d9db 100644
--- a/cpukit/posix/include/rtems/posix/muteximpl.h
+++ b/cpukit/posix/include/rtems/posix/muteximpl.h
@@ -321,9 +321,7 @@ RTEMS_INLINE_ROUTINE Status_Control _POSIX_Mutex_Ceiling_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 );
_POSIX_Mutex_Release( the_mutex, queue_context );
_Thread_Priority_update( queue_context );
_Thread_Dispatch_enable( cpu_self );
@@ -413,9 +411,7 @@ RTEMS_INLINE_ROUTINE Status_Control _POSIX_Mutex_Ceiling_surrender(
);
_Thread_Wait_release_default_critical( executing, &lock_context );
- cpu_self = _Thread_Dispatch_disable_critical(
- &queue_context->Lock_context.Lock_context
- );
+ cpu_self = _Thread_queue_Dispatch_disable( queue_context );
heads = the_mutex->Recursive.Mutex.Queue.Queue.heads;
diff --git a/cpukit/posix/src/pthreadsetschedparam.c b/cpukit/posix/src/pthreadsetschedparam.c
index 5d33f1d095..38bb0ad21e 100644
--- a/cpukit/posix/src/pthreadsetschedparam.c
+++ b/cpukit/posix/src/pthreadsetschedparam.c
@@ -155,9 +155,7 @@ int pthread_setschedparam(
budget_callout,
&queue_context
);
- cpu_self = _Thread_Dispatch_disable_critical(
- &queue_context.Lock_context.Lock_context
- );
+ cpu_self = _Thread_queue_Dispatch_disable( &queue_context );
_Thread_Wait_release( the_thread, &queue_context );
_Thread_Priority_update( &queue_context );
_Thread_Dispatch_enable( cpu_self );
diff --git a/cpukit/posix/src/pthreadsetschedprio.c b/cpukit/posix/src/pthreadsetschedprio.c
index ff7bd5c271..01dbd86b70 100644
--- a/cpukit/posix/src/pthreadsetschedprio.c
+++ b/cpukit/posix/src/pthreadsetschedprio.c
@@ -53,9 +53,7 @@ int pthread_setschedprio( pthread_t thread, int prio )
&queue_context
);
- cpu_self = _Thread_Dispatch_disable_critical(
- &queue_context.Lock_context.Lock_context
- );
+ cpu_self = _Thread_queue_Dispatch_disable( &queue_context );
_Thread_Wait_release( the_thread, &queue_context );
_Thread_Priority_update( &queue_context );
diff --git a/cpukit/rtems/src/semsetpriority.c b/cpukit/rtems/src/semsetpriority.c
index d67e816f5d..508dca5a12 100644
--- a/cpukit/rtems/src/semsetpriority.c
+++ b/cpukit/rtems/src/semsetpriority.c
@@ -110,9 +110,7 @@ static rtems_status_code _Semaphore_Set_priority(
break;
}
- cpu_self = _Thread_Dispatch_disable_critical(
- &queue_context->Lock_context.Lock_context
- );
+ cpu_self = _Thread_queue_Dispatch_disable( queue_context );
_Thread_queue_Release(
&the_semaphore->Core_control.Wait_queue,
queue_context
diff --git a/cpukit/rtems/src/taskdelete.c b/cpukit/rtems/src/taskdelete.c
index de57fb3ec0..b7c2cd5a81 100644
--- a/cpukit/rtems/src/taskdelete.c
+++ b/cpukit/rtems/src/taskdelete.c
@@ -47,9 +47,7 @@ rtems_status_code rtems_task_delete(
if ( the_thread == executing ) {
Per_CPU_Control *cpu_self;
- cpu_self = _Thread_Dispatch_disable_critical(
- &context.Base.Lock_context.Lock_context
- );
+ cpu_self = _Thread_queue_Dispatch_disable( &context.Base );
_ISR_lock_ISR_enable( &context.Base.Lock_context.Lock_context );
/*
diff --git a/cpukit/rtems/src/tasksetpriority.c b/cpukit/rtems/src/tasksetpriority.c
index c17ff1cf7f..0651d4942c 100644
--- a/cpukit/rtems/src/tasksetpriority.c
+++ b/cpukit/rtems/src/tasksetpriority.c
@@ -51,9 +51,7 @@ static rtems_status_code _RTEMS_tasks_Set_priority(
false,
queue_context
);
- cpu_self = _Thread_Dispatch_disable_critical(
- &queue_context->Lock_context.Lock_context
- );
+ cpu_self = _Thread_queue_Dispatch_disable( queue_context );
_Thread_Wait_release( the_thread, queue_context );
_Thread_Priority_update( queue_context );
_Thread_Dispatch_enable( cpu_self );
diff --git a/cpukit/rtems/src/tasksetscheduler.c b/cpukit/rtems/src/tasksetscheduler.c
index f3b7143d7b..c5e18784f0 100644
--- a/cpukit/rtems/src/tasksetscheduler.c
+++ b/cpukit/rtems/src/tasksetscheduler.c
@@ -58,10 +58,7 @@ rtems_status_code rtems_task_set_scheduler(
return RTEMS_INVALID_ID;
}
- cpu_self = _Thread_Dispatch_disable_critical(
- &queue_context.Lock_context.Lock_context
- );
-
+ cpu_self = _Thread_queue_Dispatch_disable( &queue_context );
_Thread_Wait_acquire_critical( the_thread, &queue_context );
_Thread_State_acquire_critical( the_thread, &state_context );
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 {
--
2.12.3
More information about the devel
mailing list