summaryrefslogtreecommitdiffstats
path: root/cpukit/score/src/mutex.c
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2015-09-14 07:10:24 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2015-09-14 08:30:09 +0200
commit314ff3c43ff1c00232e201df68e39cc0e5600d95 (patch)
treef5bffe857022278f8eb57e3a76bb0b670397a7ae /cpukit/score/src/mutex.c
parentrbheap: Fix rtems_rbheap_free() (diff)
downloadrtems-314ff3c43ff1c00232e201df68e39cc0e5600d95.tar.bz2
score: Fix resource count for self-contained mutex
Diffstat (limited to 'cpukit/score/src/mutex.c')
-rw-r--r--cpukit/score/src/mutex.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/cpukit/score/src/mutex.c b/cpukit/score/src/mutex.c
index f03bab76ee..b4b6d4471e 100644
--- a/cpukit/score/src/mutex.c
+++ b/cpukit/score/src/mutex.c
@@ -141,6 +141,7 @@ static void _Mutex_Release_slow(
first = ( *operations->first )( heads );
mutex->owner = first;
+ ++first->resource_count;
unblock = _Thread_queue_Extract_locked(
&mutex->Queue.Queue,
operations,
@@ -214,10 +215,10 @@ void _Mutex_Acquire( struct _Mutex_Control *_mutex )
executing = _Mutex_Queue_acquire( mutex, &lock_context );
owner = mutex->owner;
- ++executing->resource_count;
if ( __predict_true( owner == NULL ) ) {
mutex->owner = executing;
+ ++executing->resource_count;
_Mutex_Queue_release( mutex, &lock_context );
} else {
_Mutex_Acquire_slow( mutex, owner, executing, 0, &lock_context );
@@ -238,10 +239,10 @@ int _Mutex_Acquire_timed(
executing = _Mutex_Queue_acquire( mutex, &lock_context );
owner = mutex->owner;
- ++executing->resource_count;
if ( __predict_true( owner == NULL ) ) {
mutex->owner = executing;
+ ++executing->resource_count;
_Mutex_Queue_release( mutex, &lock_context );
return 0;