summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2015-12-14 14:26:13 +0100
committerSebastian Huber <sebastian.huber@embedded-brains.de>2016-02-03 10:00:51 +0100
commit17e6f869d79eaf16678420f2062f2ee95edd239e (patch)
tree6c363d5dbe420fff6a48c8db3cba6d6a47729ddf
parentFilesystem: Export most generic path eval function (diff)
downloadrtems-17e6f869d79eaf16678420f2062f2ee95edd239e.tar.bz2
Statically initialize _Objects_Information_table
-rw-r--r--cpukit/sapi/src/exinit.c19
-rw-r--r--cpukit/sapi/src/posixapi.c8
-rw-r--r--cpukit/sapi/src/rtemsapi.c8
-rw-r--r--cpukit/score/include/rtems/score/objectimpl.h2
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 <drvmgr/drvmgr.h>
#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 <rtems/rtems/signalimpl.h>
#include <rtems/rtems/timerimpl.h>
-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];
/**