summaryrefslogtreecommitdiffstats
path: root/cpukit/score/include/rtems/score/smplock.h
diff options
context:
space:
mode:
Diffstat (limited to 'cpukit/score/include/rtems/score/smplock.h')
-rw-r--r--cpukit/score/include/rtems/score/smplock.h57
1 files changed, 56 insertions, 1 deletions
diff --git a/cpukit/score/include/rtems/score/smplock.h b/cpukit/score/include/rtems/score/smplock.h
index 5eb6ef344f..50a0662ca9 100644
--- a/cpukit/score/include/rtems/score/smplock.h
+++ b/cpukit/score/include/rtems/score/smplock.h
@@ -10,7 +10,7 @@
* COPYRIGHT (c) 1989-2011.
* On-Line Applications Research Corporation (OAR).
*
- * Copyright (c) 2013-2014 embedded brains GmbH
+ * Copyright (c) 2013-2015 embedded brains GmbH
*
* The license and distribution terms for this file may be
* found in the file LICENSE in this distribution or at
@@ -32,6 +32,10 @@
#include <string.h>
#endif
+#if defined( RTEMS_PROFILING )
+#define RTEMS_SMP_LOCK_DO_NOT_INLINE
+#endif
+
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
@@ -368,7 +372,16 @@ typedef struct {
* @param[in] name The name for the SMP lock statistics. This name must be
* persistent throughout the life time of this statistics block.
*/
+#if defined( RTEMS_SMP_LOCK_DO_NOT_INLINE )
+void _SMP_lock_Initialize(
+ SMP_lock_Control *lock,
+ const char *name
+);
+
+static inline void _SMP_lock_Initialize_body(
+#else
static inline void _SMP_lock_Initialize(
+#endif
SMP_lock_Control *lock,
const char *name
)
@@ -383,7 +396,13 @@ static inline void _SMP_lock_Initialize(
*
* @param[in,out] lock The SMP lock control.
*/
+#if defined( RTEMS_SMP_LOCK_DO_NOT_INLINE )
+void _SMP_lock_Destroy( SMP_lock_Control *lock );
+
+static inline void _SMP_lock_Destroy_body( SMP_lock_Control *lock )
+#else
static inline void _SMP_lock_Destroy( SMP_lock_Control *lock )
+#endif
{
_SMP_ticket_lock_Destroy( &lock->ticket_lock );
}
@@ -399,7 +418,16 @@ static inline void _SMP_lock_Destroy( SMP_lock_Control *lock )
* @param[in,out] context The local SMP lock context for an acquire and release
* pair.
*/
+#if defined( RTEMS_SMP_LOCK_DO_NOT_INLINE )
+void _SMP_lock_Acquire(
+ SMP_lock_Control *lock,
+ SMP_lock_Context *context
+);
+
+static inline void _SMP_lock_Acquire_body(
+#else
static inline void _SMP_lock_Acquire(
+#endif
SMP_lock_Control *lock,
SMP_lock_Context *context
)
@@ -415,7 +443,16 @@ static inline void _SMP_lock_Acquire(
* @param[in,out] context The local SMP lock context for an acquire and release
* pair.
*/
+#if defined( RTEMS_SMP_LOCK_DO_NOT_INLINE )
+void _SMP_lock_Release(
+ SMP_lock_Control *lock,
+ SMP_lock_Context *context
+);
+
+static inline void _SMP_lock_Release_body(
+#else
static inline void _SMP_lock_Release(
+#endif
SMP_lock_Control *lock,
SMP_lock_Context *context
)
@@ -431,7 +468,16 @@ static inline void _SMP_lock_Release(
* @param[in,out] context The local SMP lock context for an acquire and release
* pair.
*/
+#if defined( RTEMS_SMP_LOCK_DO_NOT_INLINE )
+void _SMP_lock_ISR_disable_and_acquire(
+ SMP_lock_Control *lock,
+ SMP_lock_Context *context
+);
+
+static inline void _SMP_lock_ISR_disable_and_acquire_body(
+#else
static inline void _SMP_lock_ISR_disable_and_acquire(
+#endif
SMP_lock_Control *lock,
SMP_lock_Context *context
)
@@ -447,7 +493,16 @@ static inline void _SMP_lock_ISR_disable_and_acquire(
* @param[in,out] context The local SMP lock context for an acquire and release
* pair.
*/
+#if defined( RTEMS_SMP_LOCK_DO_NOT_INLINE )
+void _SMP_lock_Release_and_ISR_enable(
+ SMP_lock_Control *lock,
+ SMP_lock_Context *context
+);
+
+static inline void _SMP_lock_Release_and_ISR_enable_body(
+#else
static inline void _SMP_lock_Release_and_ISR_enable(
+#endif
SMP_lock_Control *lock,
SMP_lock_Context *context
)