forked from Imagelibrary/rtems
score: Add _Thread_queue_Dispatch_disable()
This commit is contained in:
@@ -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;
|
||||
|
||||
|
||||
@@ -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 );
|
||||
|
||||
@@ -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 );
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 );
|
||||
|
||||
/*
|
||||
|
||||
@@ -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 );
|
||||
|
||||
@@ -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 );
|
||||
|
||||
|
||||
@@ -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 );
|
||||
|
||||
@@ -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 );
|
||||
|
||||
@@ -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.
|
||||
*
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user