summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2016-05-30 15:00:32 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2016-05-30 16:16:24 +0200
commit024bffc665768504f594f23c9a9a6fdcca2bab38 (patch)
tree43ae7a17e99029b9666a3b79e38670251b6fe244
parenta65b02d434ecb97521a3766b889d1ca51ccf0207 (diff)
score: Use owner of thread queue for CORE mutex
-rw-r--r--cpukit/score/include/rtems/score/coremutex.h16
-rw-r--r--cpukit/score/include/rtems/score/coremuteximpl.h5
2 files changed, 8 insertions, 13 deletions
diff --git a/cpukit/score/include/rtems/score/coremutex.h b/cpukit/score/include/rtems/score/coremutex.h
index 2bde8b5ebd..26bb53920a 100644
--- a/cpukit/score/include/rtems/score/coremutex.h
+++ b/cpukit/score/include/rtems/score/coremutex.h
@@ -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.
- */
- 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.
+ /**
+ * @brief The thread queue of this mutex.
+ *
+ * The owner of the thread queue indicates the mutex owner.
*/
- Thread_Control *holder;
-} CORE_mutex_Control;
+ Thread_queue_Control Wait_queue;
+} CORE_mutex_Control;
/**
* @brief The recursive mutex control.
diff --git a/cpukit/score/include/rtems/score/coremuteximpl.h b/cpukit/score/include/rtems/score/coremuteximpl.h
index 69311e4101..decf770eed 100644
--- a/cpukit/score/include/rtems/score/coremuteximpl.h
+++ b/cpukit/score/include/rtems/score/coremuteximpl.h
@@ -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(