diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2015-04-20 08:52:52 +0200 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2015-04-21 08:25:31 +0200 |
commit | 3bf4a9fac441f90ccb79da69c67974d903da4c1a (patch) | |
tree | dfe9f5a2e0f5ee28d3c0ab346dcfe7a4d4b5ae9a /cpukit/posix/src/mutexlocksupp.c | |
parent | score: _Objects_Get_isr_disable() (diff) | |
download | rtems-3bf4a9fac441f90ccb79da69c67974d903da4c1a.tar.bz2 |
score: _Objects_Get_isr_disable()
Do not disable thread dispatching and do not acquire the Giant lock.
This makes it possible to use this object get variant for fine grained
locking.
Update #2273.
Diffstat (limited to 'cpukit/posix/src/mutexlocksupp.c')
-rw-r--r-- | cpukit/posix/src/mutexlocksupp.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/cpukit/posix/src/mutexlocksupp.c b/cpukit/posix/src/mutexlocksupp.c index 3678a0b942..92c6556980 100644 --- a/cpukit/posix/src/mutexlocksupp.c +++ b/cpukit/posix/src/mutexlocksupp.c @@ -54,6 +54,9 @@ int _POSIX_Mutex_Lock_support( switch ( location ) { case OBJECTS_LOCAL: +#if defined(RTEMS_SMP) + _Thread_Dispatch_disable(); +#endif executing = _Thread_Executing; _CORE_mutex_Seize( &the_mutex->Mutex, @@ -63,6 +66,9 @@ int _POSIX_Mutex_Lock_support( timeout, &lock_context ); +#if defined(RTEMS_SMP) + _Thread_Enable_dispatch(); +#endif _Objects_Put_for_get_isr_disable( &the_mutex->Object ); return _POSIX_Mutex_Translate_core_mutex_return_code( (CORE_mutex_Status) executing->Wait.return_code |