summaryrefslogtreecommitdiffstats
path: root/cpukit/score/include/rtems/score/isrlock.h
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2015-03-05 09:53:09 +0100
committerSebastian Huber <sebastian.huber@embedded-brains.de>2015-03-05 11:22:48 +0100
commitb8aa1c10b0886c981c7018c72e2a84cb4fb0535f (patch)
tree7f93ff6b10873ba0bd1c868a87df9e5b600d14d6 /cpukit/score/include/rtems/score/isrlock.h
parentFilesystem: Delete unused null_op_fsmount_me() (diff)
downloadrtems-b8aa1c10b0886c981c7018c72e2a84cb4fb0535f.tar.bz2
score: C/C++ compatibility macros for ISR locks
Update #2273.
Diffstat (limited to '')
-rw-r--r--cpukit/score/include/rtems/score/isrlock.h55
1 files changed, 51 insertions, 4 deletions
diff --git a/cpukit/score/include/rtems/score/isrlock.h b/cpukit/score/include/rtems/score/isrlock.h
index 51d8fca7c5..d716b3898e 100644
--- a/cpukit/score/include/rtems/score/isrlock.h
+++ b/cpukit/score/include/rtems/score/isrlock.h
@@ -7,7 +7,7 @@
*/
/*
- * Copyright (c) 2013 embedded brains GmbH. All rights reserved.
+ * Copyright (c) 2013-2015 embedded brains GmbH. All rights reserved.
*
* embedded brains GmbH
* Dornierstr. 4
@@ -71,16 +71,63 @@ typedef struct {
} ISR_lock_Context;
/**
- * @brief Defines an ISR lock.
+ * @brief Defines an ISR lock member.
*
* Do not add a ';' after this macro.
*
* @param _designator The designator for the interrupt lock.
*/
#if defined( RTEMS_SMP )
- #define ISR_LOCK_DEFINE( _designator ) ISR_lock_Control _designator;
+ #define ISR_LOCK_MEMBER( _designator ) ISR_lock_Control _designator;
#else
- #define ISR_LOCK_DEFINE( _designator )
+ #define ISR_LOCK_MEMBER( _designator )
+#endif
+
+/**
+ * @brief Declares an ISR lock variable.
+ *
+ * Do not add a ';' after this macro.
+ *
+ * @param _qualifier The qualifier for the interrupt lock, e.g. extern.
+ * @param _designator The designator for the interrupt lock.
+ */
+#if defined( RTEMS_SMP )
+ #define ISR_LOCK_DECLARE( _qualifier, _designator ) \
+ _qualifier ISR_lock_Control _designator;
+#else
+ #define ISR_LOCK_DECLARE( _qualifier, _designator )
+#endif
+
+/**
+ * @brief Defines an ISR lock variable.
+ *
+ * Do not add a ';' after this macro.
+ *
+ * @param _qualifier The qualifier for the interrupt lock, e.g. static.
+ * @param _designator The designator for the interrupt lock.
+ * @param _name The name for the interrupt lock. It must be a string. The
+ * name is only used if profiling is enabled.
+ */
+#if defined( RTEMS_SMP )
+ #define ISR_LOCK_DEFINE( _qualifier, _designator, _name ) \
+ _qualifier ISR_lock_Control _designator = { SMP_LOCK_INITIALIZER( _name ) };
+#else
+ #define ISR_LOCK_DEFINE( _qualifier, _designator, _name )
+#endif
+
+/**
+ * @brief Defines an ISR lock variable reference.
+ *
+ * Do not add a ';' after this macro.
+ *
+ * @param _designator The designator for the interrupt lock reference.
+ * @param _target The target for the interrupt lock reference.
+ */
+#if defined( RTEMS_SMP )
+ #define ISR_LOCK_REFERENCE( _designator, _target ) \
+ ISR_lock_Control *_designator = _target;
+#else
+ #define ISR_LOCK_REFERENCE( _designator, _target )
#endif
/**