score: Use owner of thread queue for CORE mutex

This commit is contained in:
Sebastian Huber
2016-05-30 16:16:24 +02:00
parent a65b02d434
commit 024bffc665
2 changed files with 8 additions and 13 deletions
+6 -10
View File
@@ -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(