summaryrefslogtreecommitdiffstats
path: root/cpukit/score
diff options
context:
space:
mode:
Diffstat (limited to 'cpukit/score')
-rw-r--r--cpukit/score/Makefile.am2
-rw-r--r--cpukit/score/include/rtems/score/apimutex.h7
-rw-r--r--cpukit/score/src/apimutexislocked.c36
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;
+}