From 105b4e6fa5005ce41c363711dec49851d4aef66f Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Tue, 10 May 2016 06:47:19 +0200 Subject: rtems: Use thread state lock for signals --- cpukit/rtems/include/rtems/rtems/asrimpl.h | 61 ++++-------------------------- 1 file changed, 8 insertions(+), 53 deletions(-) (limited to 'cpukit/rtems/include/rtems/rtems/asrimpl.h') diff --git a/cpukit/rtems/include/rtems/rtems/asrimpl.h b/cpukit/rtems/include/rtems/rtems/asrimpl.h index 892c58c595..141c34d4bb 100644 --- a/cpukit/rtems/include/rtems/rtems/asrimpl.h +++ b/cpukit/rtems/include/rtems/rtems/asrimpl.h @@ -19,6 +19,8 @@ #include +#include + #ifdef __cplusplus extern "C" { #endif @@ -40,48 +42,7 @@ RTEMS_INLINE_ROUTINE void _ASR_Initialize ( ASR_Information *asr ) { - asr->is_enabled = false; - asr->handler = NULL; - asr->mode_set = RTEMS_DEFAULT_MODES; - asr->signals_posted = 0; - asr->signals_pending = 0; - asr->nest_level = 0; -} - -RTEMS_INLINE_ROUTINE void _ASR_Create( ASR_Information *asr ) -{ - _ISR_lock_Initialize( &asr->Lock, "ASR" ); - RTEMS_STATIC_ASSERT( RTEMS_DEFAULT_MODES == 0, _ASR_Create_mode_set ); -} - -RTEMS_INLINE_ROUTINE void _ASR_Destroy( ASR_Information *asr ) -{ - _ISR_lock_Destroy( &asr->Lock ); -} - -RTEMS_INLINE_ROUTINE void _ASR_Acquire_critical( - ASR_Information *asr, - ISR_lock_Context *lock_context -) -{ - _ISR_lock_Acquire( &asr->Lock, lock_context ); -} - -RTEMS_INLINE_ROUTINE void _ASR_Acquire( - ASR_Information *asr, - ISR_lock_Context *lock_context -) -{ - _ISR_lock_ISR_disable( lock_context ); - _ASR_Acquire_critical( asr, lock_context ); -} - -RTEMS_INLINE_ROUTINE void _ASR_Release( - ASR_Information *asr, - ISR_lock_Context *lock_context -) -{ - _ISR_lock_Release_and_ISR_enable( &asr->Lock, lock_context ); + memset(asr, 0, sizeof(*asr)); } /** @@ -100,13 +61,10 @@ RTEMS_INLINE_ROUTINE bool _ASR_Is_null_handler ( RTEMS_INLINE_ROUTINE rtems_signal_set _ASR_Swap_signals( ASR_Information *asr ) { rtems_signal_set new_signals_posted; - ISR_lock_Context lock_context; - _ASR_Acquire( asr, &lock_context ); - new_signals_posted = asr->signals_pending; - asr->signals_pending = asr->signals_posted; - asr->signals_posted = new_signals_posted; - _ASR_Release( asr, &lock_context ); + new_signals_posted = asr->signals_pending; + asr->signals_pending = asr->signals_posted; + asr->signals_posted = new_signals_posted; return new_signals_posted; } @@ -124,12 +82,9 @@ RTEMS_INLINE_ROUTINE rtems_signal_set _ASR_Get_posted_signals( ) { rtems_signal_set signal_set; - ISR_lock_Context lock_context; - _ASR_Acquire( asr, &lock_context ); - signal_set = asr->signals_posted; - asr->signals_posted = 0; - _ASR_Release( asr, &lock_context ); + signal_set = asr->signals_posted; + asr->signals_posted = 0; return signal_set; } -- cgit v1.2.3