mirror of
https://gitlab.rtems.org/rtems/rtos/rtems.git
synced 2026-09-25 18:44:23 +08:00
score: Use owner of thread queue for CORE mutex
This commit is contained in:
@@ -47,17 +47,13 @@ extern "C" {
|
||||
* The following defines the control block used to manage each mutex.
|
||||
*/
|
||||
typedef struct {
|
||||
/** This field is the Waiting Queue used to manage the set of tasks
|
||||
* which are blocked waiting to lock the mutex.
|
||||
/**
|
||||
* @brief The thread queue of this mutex.
|
||||
*
|
||||
* The owner of the thread queue indicates the mutex owner.
|
||||
*/
|
||||
Thread_queue_Control Wait_queue;
|
||||
|
||||
/** This element points to the thread which is currently holding this mutex.
|
||||
* The holder is the last thread to successfully lock the mutex and which
|
||||
* has not unlocked it. If the thread is not locked, there is no holder.
|
||||
*/
|
||||
Thread_Control *holder;
|
||||
} CORE_mutex_Control;
|
||||
Thread_queue_Control Wait_queue;
|
||||
} CORE_mutex_Control;
|
||||
|
||||
/**
|
||||
* @brief The recursive mutex control.
|
||||
|
||||
@@ -40,7 +40,6 @@ RTEMS_INLINE_ROUTINE void _CORE_mutex_Initialize(
|
||||
)
|
||||
{
|
||||
_Thread_queue_Initialize( &the_mutex->Wait_queue );
|
||||
the_mutex->holder = NULL;
|
||||
}
|
||||
|
||||
RTEMS_INLINE_ROUTINE void _CORE_mutex_Destroy( CORE_mutex_Control *the_mutex )
|
||||
@@ -74,7 +73,7 @@ RTEMS_INLINE_ROUTINE Thread_Control *_CORE_mutex_Get_owner(
|
||||
const CORE_mutex_Control *the_mutex
|
||||
)
|
||||
{
|
||||
return the_mutex->holder;
|
||||
return the_mutex->Wait_queue.Queue.owner;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -126,7 +125,7 @@ RTEMS_INLINE_ROUTINE void _CORE_mutex_Set_owner(
|
||||
Thread_Control *owner
|
||||
)
|
||||
{
|
||||
the_mutex->holder = owner;
|
||||
the_mutex->Wait_queue.Queue.owner = owner;
|
||||
}
|
||||
|
||||
RTEMS_INLINE_ROUTINE bool _CORE_mutex_Is_owner(
|
||||
|
||||
Reference in New Issue
Block a user