Statically initialize _Objects_Information_table

This commit is contained in:
Sebastian Huber
2015-12-14 14:26:13 +01:00
parent e079b33e76
commit 17e6f869d7
4 changed files with 14 additions and 23 deletions

View File

@@ -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 );

View File

@@ -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

View File

@@ -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();

View File

@@ -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];
/**