diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2019-01-18 13:16:29 +0100 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2019-01-18 13:33:18 +0100 |
commit | 41310c026ca3869adbbe4962474c596ab92b3e5c (patch) | |
tree | 146406a85cb55cfc725f98b22a8f772e7cc3525a /cpukit/include/rtems/rtems/intr.h | |
parent | score: Avoid internal API and use ISR lock (diff) | |
download | rtems-41310c026ca3869adbbe4962474c596ab92b3e5c.tar.bz2 |
score: Improve debug support for ISR locks
Ensure that interrupts are disabled while acquiring an ISR lock.
Diffstat (limited to '')
-rw-r--r-- | cpukit/include/rtems/rtems/intr.h | 24 |
1 files changed, 20 insertions, 4 deletions
diff --git a/cpukit/include/rtems/rtems/intr.h b/cpukit/include/rtems/rtems/intr.h index 82433826e6..4a9ac9f478 100644 --- a/cpukit/include/rtems/rtems/intr.h +++ b/cpukit/include/rtems/rtems/intr.h @@ -342,8 +342,16 @@ typedef ISR_lock_Context rtems_interrupt_lock_context; * * @see rtems_interrupt_lock_release_isr(). */ -#define rtems_interrupt_lock_acquire_isr( _lock, _lock_context ) \ - _ISR_lock_Acquire( _lock, _lock_context ) +#if defined(RTEMS_SMP) + #define rtems_interrupt_lock_acquire_isr( _lock, _lock_context ) \ + _SMP_lock_Acquire( \ + &( _lock )->Lock, \ + &( _lock_context )->Lock_context \ + ) +#else + #define rtems_interrupt_lock_acquire_isr( _lock, _lock_context ) \ + do { (void) _lock_context; } while ( 0 ) +#endif /** * @brief Releases an interrupt lock in the corresponding interrupt service @@ -358,8 +366,16 @@ typedef ISR_lock_Context rtems_interrupt_lock_context; * * @see rtems_interrupt_lock_acquire_isr(). */ -#define rtems_interrupt_lock_release_isr( _lock, _lock_context ) \ - _ISR_lock_Release( _lock, _lock_context ) +#if defined(RTEMS_SMP) + #define rtems_interrupt_lock_release_isr( _lock, _lock_context ) \ + _SMP_lock_Release( \ + &( _lock )->Lock, \ + &( _lock_context )->Lock_context \ + ) +#else + #define rtems_interrupt_lock_release_isr( _lock, _lock_context ) \ + do { (void) _lock_context; } while ( 0 ) +#endif /** @} */ |