summaryrefslogtreecommitdiffstats
path: root/cpukit/rtems/src/intrbody.c
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2015-06-19 14:57:44 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2015-06-22 08:40:26 +0200
commitcdf30f0550432648ac005e3f71814b7f708a4ce3 (patch)
tree7dc1af2af9a1de7565a9e79736166994495486a2 /cpukit/rtems/src/intrbody.c
parenttmtests/tm27: Use scheduler lock (diff)
downloadrtems-cdf30f0550432648ac005e3f71814b7f708a4ce3.tar.bz2
rtems: Add rtems_interrupt_local_disable|enable()
Add rtems_interrupt_local_disable|enable() as suggested by Pavel Pisa to emphasize that interrupts are only disabled on the current processor. Do not define the rtems_interrupt_disable|enable|flash() macros and functions on SMP configurations since they don't ensure system wide mutual exclusion.
Diffstat (limited to 'cpukit/rtems/src/intrbody.c')
-rw-r--r--cpukit/rtems/src/intrbody.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/cpukit/rtems/src/intrbody.c b/cpukit/rtems/src/intrbody.c
index 6b37eb26ca..a82dc101e6 100644
--- a/cpukit/rtems/src/intrbody.c
+++ b/cpukit/rtems/src/intrbody.c
@@ -23,6 +23,8 @@
#include <rtems/score/isr.h>
#include <rtems/rtems/intr.h>
+#if !defined(RTEMS_SMP)
+
/*
* Undefine all of these is normally a macro and we want a real body in
* the library for other language bindings.
@@ -30,7 +32,6 @@
#undef rtems_interrupt_disable
#undef rtems_interrupt_enable
#undef rtems_interrupt_flash
-#undef rtems_interrupt_is_in_progress
/*
* Prototype them to avoid warnings
@@ -38,7 +39,6 @@
rtems_interrupt_level rtems_interrupt_disable( void );
void rtems_interrupt_enable( rtems_interrupt_level previous_level );
void rtems_interrupt_flash( rtems_interrupt_level previous_level );
-bool rtems_interrupt_is_in_progress( void );
/*
* Now define real bodies
@@ -66,6 +66,11 @@ void rtems_interrupt_flash(
_ISR_Flash( previous_level );
}
+#endif /* RTEMS_SMP */
+
+#undef rtems_interrupt_is_in_progress
+bool rtems_interrupt_is_in_progress( void );
+
bool rtems_interrupt_is_in_progress( void )
{
return _ISR_Is_in_progress();