summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2021-02-17 09:05:53 +0100
committerSebastian Huber <sebastian.huber@embedded-brains.de>2021-02-20 15:18:49 +0100
commit74ca8b7517ac463b73daf7d6b4773a1987a6760b (patch)
tree1ff6e95951e529f009ac28aa04eaee7e5dc98e29
parentrtems: Remove unused ASR_Information::nest_level (diff)
downloadrtems-74ca8b7517ac463b73daf7d6b4773a1987a6760b.tar.bz2
rtems: Move _Signal_Action_handler()
Move _Signal_Action_handler() and signal MP initialization to rtems_signal_send(). The goal is to make _Signal_Action_handler() a static function in a follow up patch. Update #4244.
-rw-r--r--cpukit/rtems/src/signalcatch.c54
-rw-r--r--cpukit/rtems/src/signalsend.c54
2 files changed, 54 insertions, 54 deletions
diff --git a/cpukit/rtems/src/signalcatch.c b/cpukit/rtems/src/signalcatch.c
index 27d7503a31..e4ff15fd40 100644
--- a/cpukit/rtems/src/signalcatch.c
+++ b/cpukit/rtems/src/signalcatch.c
@@ -21,51 +21,13 @@
#include "config.h"
#endif
-#include <rtems/sysinit.h>
#include <rtems/rtems/signalimpl.h>
#include <rtems/rtems/asrimpl.h>
#include <rtems/rtems/tasksdata.h>
-#include <rtems/score/assert.h>
#include <rtems/score/threadimpl.h>
RTEMS_STATIC_ASSERT( RTEMS_DEFAULT_MODES == 0, _ASR_Create_mode_set );
-void _Signal_Action_handler(
- Thread_Control *executing,
- Thread_Action *action,
- ISR_lock_Context *lock_context
-)
-{
- RTEMS_API_Control *api;
- ASR_Information *asr;
- rtems_signal_set signal_set;
- rtems_mode prev_mode;
-
- (void) action;
-
- /*
- * Signal Processing
- */
-
- api = executing->API_Extensions[ THREAD_API_RTEMS ];
- asr = &api->Signal;
- signal_set = _ASR_Get_posted_signals( asr );
-
- if ( signal_set == 0 ) {
- return;
- }
-
- _Thread_State_release( executing, lock_context );
-
- rtems_task_mode( asr->mode_set, RTEMS_ALL_MODE_MASKS, &prev_mode );
-
- (*asr->handler)( signal_set );
-
- rtems_task_mode( prev_mode, RTEMS_ALL_MODE_MASKS, &prev_mode );
-
- _Thread_State_acquire( executing, lock_context );
-}
-
rtems_status_code rtems_signal_catch(
rtems_asr_entry asr_handler,
rtems_mode mode_set
@@ -90,19 +52,3 @@ rtems_status_code rtems_signal_catch(
_Thread_State_release( executing, &lock_context );
return RTEMS_SUCCESSFUL;
}
-
-#if defined(RTEMS_MULTIPROCESSING)
-static void _Signal_MP_Initialize( void )
-{
- _MPCI_Register_packet_processor(
- MP_PACKET_SIGNAL,
- _Signal_MP_Process_packet
- );
-}
-
-RTEMS_SYSINIT_ITEM(
- _Signal_MP_Initialize,
- RTEMS_SYSINIT_CLASSIC_SIGNAL_MP,
- RTEMS_SYSINIT_ORDER_MIDDLE
-);
-#endif
diff --git a/cpukit/rtems/src/signalsend.c b/cpukit/rtems/src/signalsend.c
index efc3a9566a..fc8a66b6c6 100644
--- a/cpukit/rtems/src/signalsend.c
+++ b/cpukit/rtems/src/signalsend.c
@@ -26,6 +26,44 @@
#include <rtems/score/threaddispatch.h>
#include <rtems/score/threadimpl.h>
+#include <rtems/sysinit.h>
+
+void _Signal_Action_handler(
+ Thread_Control *executing,
+ Thread_Action *action,
+ ISR_lock_Context *lock_context
+)
+{
+ RTEMS_API_Control *api;
+ ASR_Information *asr;
+ rtems_signal_set signal_set;
+ rtems_mode prev_mode;
+
+ (void) action;
+
+ /*
+ * Signal Processing
+ */
+
+ api = executing->API_Extensions[ THREAD_API_RTEMS ];
+ asr = &api->Signal;
+ signal_set = _ASR_Get_posted_signals( asr );
+
+ if ( signal_set == 0 ) {
+ return;
+ }
+
+ _Thread_State_release( executing, lock_context );
+
+ rtems_task_mode( asr->mode_set, RTEMS_ALL_MODE_MASKS, &prev_mode );
+
+ (*asr->handler)( signal_set );
+
+ rtems_task_mode( prev_mode, RTEMS_ALL_MODE_MASKS, &prev_mode );
+
+ _Thread_State_acquire( executing, lock_context );
+}
+
rtems_status_code rtems_signal_send(
rtems_id id,
rtems_signal_set signal_set
@@ -79,3 +117,19 @@ rtems_status_code rtems_signal_send(
return RTEMS_SUCCESSFUL;
}
+
+#if defined(RTEMS_MULTIPROCESSING)
+static void _Signal_MP_Initialize( void )
+{
+ _MPCI_Register_packet_processor(
+ MP_PACKET_SIGNAL,
+ _Signal_MP_Process_packet
+ );
+}
+
+RTEMS_SYSINIT_ITEM(
+ _Signal_MP_Initialize,
+ RTEMS_SYSINIT_CLASSIC_SIGNAL_MP,
+ RTEMS_SYSINIT_ORDER_MIDDLE
+);
+#endif