From a853c8518d7b8ccf54491018857ed86548f3ea24 Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Thu, 10 Dec 2015 15:44:02 +0100 Subject: Optional Initial Extensions initialization Update #2408. --- cpukit/sapi/include/confdefs.h | 8 ++++++++ cpukit/sapi/src/exinit.c | 2 -- cpukit/score/include/rtems/sysinit.h | 3 ++- cpukit/score/src/threaddispatch.c | 2 ++ cpukit/score/src/userext.c | 23 ++++++++--------------- 5 files changed, 20 insertions(+), 18 deletions(-) (limited to 'cpukit') diff --git a/cpukit/sapi/include/confdefs.h b/cpukit/sapi/include/confdefs.h index 8635ca02d4..8f5906d067 100644 --- a/cpukit/sapi/include/confdefs.h +++ b/cpukit/sapi/include/confdefs.h @@ -26,8 +26,10 @@ * Include the executive's configuration */ #include +#include #include #include +#include #include #ifdef CONFIGURE_DISABLE_BSP_SETTINGS @@ -2394,6 +2396,12 @@ const rtems_libio_helper rtems_fs_init_helper = #define CONFIGURE_INITIAL_EXTENSION_TABLE Configuration_Initial_Extensions #define CONFIGURE_NUMBER_OF_INITIAL_EXTENSIONS \ RTEMS_ARRAY_SIZE(Configuration_Initial_Extensions) + + RTEMS_SYSINIT_ITEM( + _User_extensions_Handler_initialization, + RTEMS_SYSINIT_INITIAL_EXTENSIONS, + RTEMS_SYSINIT_ORDER_MIDDLE + ); #else #define CONFIGURE_INITIAL_EXTENSION_TABLE NULL #define CONFIGURE_NUMBER_OF_INITIAL_EXTENSIONS 0 diff --git a/cpukit/sapi/src/exinit.c b/cpukit/sapi/src/exinit.c index faaf283a30..685197df90 100644 --- a/cpukit/sapi/src/exinit.c +++ b/cpukit/sapi/src/exinit.c @@ -47,7 +47,6 @@ #include #include #include -#include #include #include @@ -113,7 +112,6 @@ static void rtems_initialize_data_structures(void) _Thread_Dispatch_initialization(); - _User_extensions_Handler_initialization(); _ISR_Handler_initialization(); _API_Mutex_Initialization( 2 ); diff --git a/cpukit/score/include/rtems/sysinit.h b/cpukit/score/include/rtems/sysinit.h index e6fe62f230..49c465bfbc 100644 --- a/cpukit/score/include/rtems/sysinit.h +++ b/cpukit/score/include/rtems/sysinit.h @@ -28,7 +28,8 @@ extern "C" { */ #define RTEMS_SYSINIT_BSP_WORK_AREAS 000100 #define RTEMS_SYSINIT_BSP_START 000200 -#define RTEMS_SYSINIT_DATA_STRUCTURES 000300 +#define RTEMS_SYSINIT_INITIAL_EXTENSIONS 000300 +#define RTEMS_SYSINIT_DATA_STRUCTURES 000301 #define RTEMS_SYSINIT_IDLE_THREADS 000380 #define RTEMS_SYSINIT_BSP_LIBC 000400 #define RTEMS_SYSINIT_BEFORE_DRIVERS 000500 diff --git a/cpukit/score/src/threaddispatch.c b/cpukit/score/src/threaddispatch.c index 3ae8335fef..00c2f095a2 100644 --- a/cpukit/score/src/threaddispatch.c +++ b/cpukit/score/src/threaddispatch.c @@ -30,6 +30,8 @@ #include #include +CHAIN_DEFINE_EMPTY( _User_extensions_Switches_list ); + static Thread_Action *_Thread_Get_post_switch_action( Thread_Control *executing ) diff --git a/cpukit/score/src/userext.c b/cpukit/score/src/userext.c index 1328f68b42..1ac622e093 100644 --- a/cpukit/score/src/userext.c +++ b/cpukit/score/src/userext.c @@ -23,8 +23,6 @@ #include #include -CHAIN_DEFINE_EMPTY( _User_extensions_Switches_list ); - typedef struct { User_extensions_Switch_control *switch_control; } User_extensions_Switch_context; @@ -50,17 +48,12 @@ static void _User_extensions_Switch_visitor( void _User_extensions_Handler_initialization(void) { - uint32_t number_of_initial_extensions = - rtems_configuration_get_number_of_initial_extensions(); - - if ( number_of_initial_extensions > 0 ) { - User_extensions_Switch_control *initial_extension_switch_controls = - _Workspace_Allocate_or_fatal_error( - number_of_initial_extensions - * sizeof( *initial_extension_switch_controls ) - ); - User_extensions_Switch_context ctx = { initial_extension_switch_controls }; - - _User_extensions_Iterate( &ctx, _User_extensions_Switch_visitor ); - } + User_extensions_Switch_control *initial_extension_switch_controls = + _Workspace_Allocate_or_fatal_error( + rtems_configuration_get_number_of_initial_extensions() + * sizeof( *initial_extension_switch_controls ) + ); + User_extensions_Switch_context ctx = { initial_extension_switch_controls }; + + _User_extensions_Iterate( &ctx, _User_extensions_Switch_visitor ); } -- cgit v1.2.3