From a7f36829c08d86f6a53b5aad83a21e38aa1454b5 Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Mon, 14 Dec 2015 14:56:41 +0100 Subject: Optional Classic Signal initialization Update #2408. --- cpukit/rtems/Makefile.am | 1 - cpukit/rtems/include/rtems/rtems/signalimpl.h | 9 ------ cpukit/rtems/src/signal.c | 45 --------------------------- cpukit/rtems/src/signalcatch.c | 17 ++++++++++ cpukit/sapi/src/rtemsapi.c | 2 -- cpukit/score/include/rtems/sysinit.h | 1 + testsuites/sptests/spsysinit01/init.c | 13 ++++++++ 7 files changed, 31 insertions(+), 57 deletions(-) delete mode 100644 cpukit/rtems/src/signal.c diff --git a/cpukit/rtems/Makefile.am b/cpukit/rtems/Makefile.am index 83ee630c60..211aef4e6a 100644 --- a/cpukit/rtems/Makefile.am +++ b/cpukit/rtems/Makefile.am @@ -208,7 +208,6 @@ librtems_a_SOURCES += src/systemeventsend.c librtems_a_SOURCES += src/systemeventreceive.c ## SIGNAL_C_FILES -librtems_a_SOURCES += src/signal.c librtems_a_SOURCES += src/signalcatch.c librtems_a_SOURCES += src/signalsend.c diff --git a/cpukit/rtems/include/rtems/rtems/signalimpl.h b/cpukit/rtems/include/rtems/rtems/signalimpl.h index e093394462..b19b2ace84 100644 --- a/cpukit/rtems/include/rtems/rtems/signalimpl.h +++ b/cpukit/rtems/include/rtems/rtems/signalimpl.h @@ -32,15 +32,6 @@ extern "C" { */ /**@{*/ -/** - * @brief Signal Manager Initialization - * - * Signal Manager - * - * This routine performs the initialization necessary for this manager. - */ -void _Signal_Manager_initialization( void ); - void _Signal_Action_handler( Thread_Control *thread, Thread_Action *action, diff --git a/cpukit/rtems/src/signal.c b/cpukit/rtems/src/signal.c deleted file mode 100644 index 5eeaeeb0e7..0000000000 --- a/cpukit/rtems/src/signal.c +++ /dev/null @@ -1,45 +0,0 @@ -/** - * @file - * - * @brief Signal Manager Initialization - * @ingroup ClassicSignal Signals - */ - -/* - * COPYRIGHT (c) 1989-1999. - * On-Line Applications Research Corporation (OAR). - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.rtems.org/license/LICENSE. - */ - -#if HAVE_CONFIG_H -#include "config.h" -#endif - -#include - -/* - * _Signal_Manager_initialization - * - * This routine initializes all signal manager related data structures. - * - * Input parameters: NONE - * - * Output parameters: NONE - */ - -void _Signal_Manager_initialization( void ) -{ - /* - * Register the MP Process Packet routine. - */ - -#if defined(RTEMS_MULTIPROCESSING) - _MPCI_Register_packet_processor( - MP_PACKET_SIGNAL, - _Signal_MP_Process_packet - ); -#endif -} diff --git a/cpukit/rtems/src/signalcatch.c b/cpukit/rtems/src/signalcatch.c index 1bbeea727f..bab415763e 100644 --- a/cpukit/rtems/src/signalcatch.c +++ b/cpukit/rtems/src/signalcatch.c @@ -18,6 +18,7 @@ #include "config.h" #endif +#include #include #include #include @@ -89,3 +90,19 @@ rtems_status_code rtems_signal_catch( _Thread_Enable_dispatch(); return RTEMS_SUCCESSFUL; } + +#if defined(RTEMS_MULTIPROCESSING) +static void _Signal_Manager_initialization( void ) +{ + _MPCI_Register_packet_processor( + MP_PACKET_SIGNAL, + _Signal_MP_Process_packet + ); +} + +RTEMS_SYSINIT_ITEM( + _Signal_Manager_initialization, + RTEMS_SYSINIT_CLASSIC_SIGNAL, + RTEMS_SYSINIT_ORDER_MIDDLE +); +#endif diff --git a/cpukit/sapi/src/rtemsapi.c b/cpukit/sapi/src/rtemsapi.c index 422cf6cc22..a5da72cc85 100644 --- a/cpukit/sapi/src/rtemsapi.c +++ b/cpukit/sapi/src/rtemsapi.c @@ -35,11 +35,9 @@ #include #include #include -#include void _RTEMS_API_Initialize(void) { - _Signal_Manager_initialization(); _Event_Manager_initialization(); _Message_queue_Manager_initialization(); _Semaphore_Manager_initialization(); diff --git a/cpukit/score/include/rtems/sysinit.h b/cpukit/score/include/rtems/sysinit.h index cd604877a8..6351e12106 100644 --- a/cpukit/score/include/rtems/sysinit.h +++ b/cpukit/score/include/rtems/sysinit.h @@ -33,6 +33,7 @@ extern "C" { #define RTEMS_SYSINIT_USER_EXTENSIONS 000320 #define RTEMS_SYSINIT_CLASSIC_TASKS 000340 #define RTEMS_SYSINIT_CLASSIC_TIMER 000341 +#define RTEMS_SYSINIT_CLASSIC_SIGNAL 000342 #define RTEMS_SYSINIT_IDLE_THREADS 000380 #define RTEMS_SYSINIT_BSP_LIBC 000400 #define RTEMS_SYSINIT_BEFORE_DRIVERS 000500 diff --git a/testsuites/sptests/spsysinit01/init.c b/testsuites/sptests/spsysinit01/init.c index 6d05e0f89d..f7c3073452 100644 --- a/testsuites/sptests/spsysinit01/init.c +++ b/testsuites/sptests/spsysinit01/init.c @@ -49,6 +49,8 @@ typedef enum { CLASSIC_TASKS_POST, CLASSIC_TIMER_PRE, CLASSIC_TIMER_POST, + CLASSIC_SIGNAL_PRE, + CLASSIC_SIGNAL_POST, IDLE_THREADS_PRE, IDLE_THREADS_POST, BSP_LIBC_PRE, @@ -178,6 +180,17 @@ LAST(RTEMS_SYSINIT_CLASSIC_TIMER) next_step(CLASSIC_TIMER_POST); } +FIRST(RTEMS_SYSINIT_CLASSIC_SIGNAL) +{ + /* There is nothing to do in case RTEMS_MULTIPROCESSING is not defined */ + next_step(CLASSIC_SIGNAL_PRE); +} + +LAST(RTEMS_SYSINIT_CLASSIC_SIGNAL) +{ + next_step(CLASSIC_SIGNAL_POST); +} + FIRST(RTEMS_SYSINIT_IDLE_THREADS) { assert(_System_state_Is_before_initialization(_System_state_Get())); -- cgit v1.2.3