diff options
Diffstat (limited to 'cpukit')
-rw-r--r-- | cpukit/score/Makefile.am | 2 | ||||
-rw-r--r-- | cpukit/score/include/rtems/score/apimutex.h | 7 | ||||
-rw-r--r-- | cpukit/score/src/apimutexislocked.c | 36 |
3 files changed, 44 insertions, 1 deletions
diff --git a/cpukit/score/Makefile.am b/cpukit/score/Makefile.am index dc51e9a691..f0cd67641c 100644 --- a/cpukit/score/Makefile.am +++ b/cpukit/score/Makefile.am @@ -149,7 +149,7 @@ endif ## CORE_APIMUTEX_C_FILES libscore_a_SOURCES += src/apimutex.c \ - src/apimutexlock.c src/apimutexunlock.c + src/apimutexlock.c src/apimutexislocked.c src/apimutexunlock.c ## CORE_BARRIER_C_FILES libscore_a_SOURCES += src/corebarrier.c src/corebarrierrelease.c \ diff --git a/cpukit/score/include/rtems/score/apimutex.h b/cpukit/score/include/rtems/score/apimutex.h index 5f02e0a1cf..c960679d6b 100644 --- a/cpukit/score/include/rtems/score/apimutex.h +++ b/cpukit/score/include/rtems/score/apimutex.h @@ -85,6 +85,8 @@ void _API_Mutex_Lock( API_Mutex_Control *mutex ); */ void _API_Mutex_Unlock( API_Mutex_Control *mutex ); +bool _API_Mutex_Is_Locked( API_Mutex_Control *mutex ); + /** @} */ /** @@ -118,6 +120,11 @@ static inline void _RTEMS_Unlock_allocator( void ) _API_Mutex_Unlock( _RTEMS_Allocator_Mutex ); } +static inline bool _RTEMS_Check_if_allocator_is_locked( void ) +{ + return _API_Mutex_Is_Locked( _RTEMS_Allocator_Mutex ); +} + SCORE_EXTERN API_Mutex_Control *_Once_Mutex; static inline void _Once_Lock( void ) diff --git a/cpukit/score/src/apimutexislocked.c b/cpukit/score/src/apimutexislocked.c new file mode 100644 index 0000000000..804ce4a6ce --- /dev/null +++ b/cpukit/score/src/apimutexislocked.c @@ -0,0 +1,36 @@ +/** + * @file + * + * @brief Check if the specified API mutex is locked. + * + * @ingroup ScoreAPIMutex + */ + +/* + * COPYRIGHT (c) 1989-2015. + * On-Line Applications Research Corporation (OAR). + * + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rtems.org/license/LICENSE. + */ + +#if HAVE_CONFIG_H +#include "config.h" +#endif + +#include <rtems/score/apimutex.h> +#include <rtems/score/coremuteximpl.h> +#include <rtems/score/threadimpl.h> + +bool _API_Mutex_Is_Locked( API_Mutex_Control *the_mutex ) +{ + bool is_locked; + ISR_Level level; + + _ISR_Disable( level ); + is_locked = _CORE_mutex_Is_locked( &the_mutex->Mutex ); + _ISR_Enable( level ); + + return is_locked; +} |