summaryrefslogtreecommitdiffstats
path: root/cpukit/rtems
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2015-05-02 14:27:24 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2015-05-19 12:00:47 +0200
commit4438ac2575fb9e0760bf53931a52d00dec4deb83 (patch)
tree1a81aa76215e781bdddd08a92f4be01454d330ae /cpukit/rtems
parentscore: Inline _CORE_semaphore_Surrender() (diff)
downloadrtems-4438ac2575fb9e0760bf53931a52d00dec4deb83.tar.bz2
score: Fine grained locking for mutexes
Update #2273.
Diffstat (limited to 'cpukit/rtems')
-rw-r--r--cpukit/rtems/src/semobtain.c7
-rw-r--r--cpukit/rtems/src/semrelease.c6
2 files changed, 2 insertions, 11 deletions
diff --git a/cpukit/rtems/src/semobtain.c b/cpukit/rtems/src/semobtain.c
index 46d1b82f33..1ebc98bdb7 100644
--- a/cpukit/rtems/src/semobtain.c
+++ b/cpukit/rtems/src/semobtain.c
@@ -73,9 +73,6 @@ rtems_status_code rtems_semaphore_obtain(
} else
#endif
if ( !_Attributes_Is_counting_semaphore( attribute_set ) ) {
-#if defined(RTEMS_SMP)
- _Thread_Disable_dispatch();
-#endif
_CORE_mutex_Seize(
&the_semaphore->Core_control.mutex,
executing,
@@ -84,10 +81,6 @@ rtems_status_code rtems_semaphore_obtain(
timeout,
&lock_context
);
-#if defined(RTEMS_SMP)
- _Thread_Enable_dispatch();
-#endif
- _Objects_Put_for_get_isr_disable( &the_semaphore->Object );
return _Semaphore_Translate_core_mutex_return_code(
executing->Wait.return_code );
}
diff --git a/cpukit/rtems/src/semrelease.c b/cpukit/rtems/src/semrelease.c
index 1f0581eec1..7e4b98e7de 100644
--- a/cpukit/rtems/src/semrelease.c
+++ b/cpukit/rtems/src/semrelease.c
@@ -86,14 +86,12 @@ rtems_status_code rtems_semaphore_release(
} else
#endif
if ( !_Attributes_Is_counting_semaphore( attribute_set ) ) {
- _Thread_Disable_dispatch();
- _ISR_lock_ISR_enable( &lock_context );
mutex_status = _CORE_mutex_Surrender(
&the_semaphore->Core_control.mutex,
id,
- MUTEX_MP_SUPPORT
+ MUTEX_MP_SUPPORT,
+ &lock_context
);
- _Thread_Enable_dispatch();
return _Semaphore_Translate_core_mutex_return_code( mutex_status );
} else {
semaphore_status = _CORE_semaphore_Surrender(