summaryrefslogtreecommitdiffstats
path: root/cpukit/rtems/include
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2016-05-10 06:47:19 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2016-05-12 13:24:40 +0200
commit105b4e6fa5005ce41c363711dec49851d4aef66f (patch)
tree23ded5915c1438a5a5c6285ab2db16d1abe480d5 /cpukit/rtems/include
parentscore: Introduce thread state lock (diff)
downloadrtems-105b4e6fa5005ce41c363711dec49851d4aef66f.tar.bz2
rtems: Use thread state lock for signals
Diffstat (limited to 'cpukit/rtems/include')
-rw-r--r--cpukit/rtems/include/rtems/rtems/asr.h3
-rw-r--r--cpukit/rtems/include/rtems/rtems/asrimpl.h61
2 files changed, 8 insertions, 56 deletions
diff --git a/cpukit/rtems/include/rtems/rtems/asr.h b/cpukit/rtems/include/rtems/rtems/asr.h
index 4563750919..edd5e2fe62 100644
--- a/cpukit/rtems/include/rtems/rtems/asr.h
+++ b/cpukit/rtems/include/rtems/rtems/asr.h
@@ -22,7 +22,6 @@
#ifndef _RTEMS_RTEMS_ASR_H
#define _RTEMS_RTEMS_ASR_H
-#include <rtems/score/isrlock.h>
#include <rtems/rtems/modes.h>
#ifdef __cplusplus
@@ -75,8 +74,6 @@ typedef struct {
rtems_signal_set signals_pending;
/** This field indicates if nest level of signals being processed */
uint32_t nest_level;
- /** Lock to protect this structure */
- ISR_LOCK_MEMBER( Lock )
} ASR_Information;
/*
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 <rtems/rtems/asr.h>
+#include <string.h>
+
#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;
}