From 17e6f869d79eaf16678420f2062f2ee95edd239e Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Mon, 14 Dec 2015 14:26:13 +0100 Subject: Statically initialize _Objects_Information_table --- cpukit/sapi/src/exinit.c | 19 +++++++++++++------ cpukit/sapi/src/posixapi.c | 8 -------- cpukit/sapi/src/rtemsapi.c | 8 -------- cpukit/score/include/rtems/score/objectimpl.h | 2 +- 4 files changed, 14 insertions(+), 23 deletions(-) diff --git a/cpukit/sapi/src/exinit.c b/cpukit/sapi/src/exinit.c index 1eaf24f4d3..7c1ffd65ec 100644 --- a/cpukit/sapi/src/exinit.c +++ b/cpukit/sapi/src/exinit.c @@ -61,7 +61,19 @@ #include #endif -Objects_Information *_Internal_Objects[ OBJECTS_INTERNAL_CLASSES_LAST + 1 ]; +static Objects_Information * +_Internal_Objects[ OBJECTS_INTERNAL_CLASSES_LAST + 1 ]; + +static Objects_Information *_RTEMS_Objects[ OBJECTS_RTEMS_CLASSES_LAST + 1 ]; + +static Objects_Information *_POSIX_Objects[ OBJECTS_POSIX_CLASSES_LAST + 1 ]; + +Objects_Information **_Objects_Information_table[ OBJECTS_APIS_LAST + 1 ] = { + NULL, + &_Internal_Objects[ 0 ], + &_RTEMS_Objects[ 0 ], + &_POSIX_Objects[ 0 ] +}; static void rtems_initialize_data_structures(void) { @@ -104,11 +116,6 @@ static void rtems_initialize_data_structures(void) _User_extensions_Handler_initialization(); _ISR_Handler_initialization(); - /* - * Initialize the internal support API and allocator Mutex - */ - _Objects_Information_table[OBJECTS_INTERNAL_API] = _Internal_Objects; - _API_Mutex_Initialization( 2 ); _API_Mutex_Allocate( &_RTEMS_Allocator_Mutex ); _API_Mutex_Allocate( &_Once_Mutex ); diff --git a/cpukit/sapi/src/posixapi.c b/cpukit/sapi/src/posixapi.c index 4bdb69425c..60fa17ed46 100644 --- a/cpukit/sapi/src/posixapi.c +++ b/cpukit/sapi/src/posixapi.c @@ -52,8 +52,6 @@ void _POSIX_Fatal_error( POSIX_Fatal_domain domain, int eno ) _Terminate( INTERNAL_ERROR_POSIX_API, false, code ); } -Objects_Information *_POSIX_Objects[ OBJECTS_POSIX_CLASSES_LAST + 1 ]; - void _POSIX_API_Initialize(void) { /* @@ -63,12 +61,6 @@ void _POSIX_API_Initialize(void) * Currently, there are no none type size assumptions. */ - /* - * Install our API Object Management Table and initialize the - * various managers. - */ - _Objects_Information_table[OBJECTS_POSIX_API] = _POSIX_Objects; - _POSIX_Key_Manager_initialization(); #ifdef RTEMS_POSIX_API diff --git a/cpukit/sapi/src/rtemsapi.c b/cpukit/sapi/src/rtemsapi.c index 98fe2772d7..93b9847904 100644 --- a/cpukit/sapi/src/rtemsapi.c +++ b/cpukit/sapi/src/rtemsapi.c @@ -39,16 +39,8 @@ #include #include -Objects_Information *_RTEMS_Objects[ OBJECTS_RTEMS_CLASSES_LAST + 1 ]; - void _RTEMS_API_Initialize(void) { - /* - * Install our API Object Management Table and initialize the - * various managers. - */ - _Objects_Information_table[OBJECTS_CLASSIC_API] = _RTEMS_Objects; - _RTEMS_tasks_Manager_initialization(); _Timer_Manager_initialization(); _Signal_Manager_initialization(); diff --git a/cpukit/score/include/rtems/score/objectimpl.h b/cpukit/score/include/rtems/score/objectimpl.h index 80c50a5b56..4f49ef5f2a 100644 --- a/cpukit/score/include/rtems/score/objectimpl.h +++ b/cpukit/score/include/rtems/score/objectimpl.h @@ -197,7 +197,7 @@ SCORE_EXTERN uint16_t _Objects_Maximum_nodes; * class. From the ID, we can go to one of these information blocks, * and obtain a pointer to the appropriate object control block. */ -SCORE_EXTERN Objects_Information +extern Objects_Information **_Objects_Information_table[OBJECTS_APIS_LAST + 1]; /** -- cgit v1.2.3