diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2015-12-10 15:44:02 +0100 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2016-02-03 10:00:51 +0100 |
commit | a853c8518d7b8ccf54491018857ed86548f3ea24 (patch) | |
tree | e333b5dd474718b8037a865690706811b810f93c /cpukit | |
parent | score: Create idle threads via linker set (diff) | |
download | rtems-a853c8518d7b8ccf54491018857ed86548f3ea24.tar.bz2 |
Optional Initial Extensions initialization
Update #2408.
Diffstat (limited to 'cpukit')
-rw-r--r-- | cpukit/sapi/include/confdefs.h | 8 | ||||
-rw-r--r-- | cpukit/sapi/src/exinit.c | 2 | ||||
-rw-r--r-- | cpukit/score/include/rtems/sysinit.h | 3 | ||||
-rw-r--r-- | cpukit/score/src/threaddispatch.c | 2 | ||||
-rw-r--r-- | cpukit/score/src/userext.c | 23 |
5 files changed, 20 insertions, 18 deletions
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 <rtems.h> +#include <rtems/sysinit.h> #include <rtems/score/apimutex.h> #include <rtems/score/percpu.h> +#include <rtems/score/userextimpl.h> #include <rtems/score/wkspace.h> #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 <rtems/score/timecounter.h> #include <rtems/score/threadimpl.h> #include <rtems/score/todimpl.h> -#include <rtems/score/userextimpl.h> #include <rtems/score/watchdogimpl.h> #include <rtems/score/wkspace.h> @@ -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 <rtems/score/wkspace.h> #include <rtems/config.h> +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 <rtems/score/userextimpl.h> #include <rtems/score/wkspace.h> -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 ); } |