2008-12-17 Joel Sherrill <joel.sherrill@oarcorp.com>

* sapi/include/rtems/extension.h, sapi/include/rtems/io.h,
	sapi/src/exinit.c, sapi/src/extension.c, sapi/src/io.c,
	score/include/rtems/score/mpci.h, score/include/rtems/score/object.h,
	score/include/rtems/score/thread.h, score/include/rtems/score/tod.h,
	score/include/rtems/score/userext.h,
	score/include/rtems/score/wkspace.h, score/src/coretod.c,
	score/src/mpci.c, score/src/object.c, score/src/thread.c,
	score/src/userext.c, score/src/wkspace.c: Convert SAPI manager and
	SuperCore Handler initialization routines to directly pull parameters
	from configuration table.
This commit is contained in:
Joel Sherrill
2008-12-17 22:46:05 +00:00
parent e06ecec518
commit 790b50b8da
18 changed files with 103 additions and 159 deletions

View File

@@ -1,3 +1,16 @@
2008-12-17 Joel Sherrill <joel.sherrill@oarcorp.com>
* sapi/include/rtems/extension.h, sapi/include/rtems/io.h,
sapi/src/exinit.c, sapi/src/extension.c, sapi/src/io.c,
score/include/rtems/score/mpci.h, score/include/rtems/score/object.h,
score/include/rtems/score/thread.h, score/include/rtems/score/tod.h,
score/include/rtems/score/userext.h,
score/include/rtems/score/wkspace.h, score/src/coretod.c,
score/src/mpci.c, score/src/object.c, score/src/thread.c,
score/src/userext.c, score/src/wkspace.c: Convert SAPI manager and
SuperCore Handler initialization routines to directly pull parameters
from configuration table.
2008-12-17 Joel Sherrill <joel.sherrill@oarcorp.com> 2008-12-17 Joel Sherrill <joel.sherrill@oarcorp.com>
* itron/include/rtems/itron/config.h, * itron/include/rtems/itron/config.h,

View File

@@ -13,7 +13,7 @@
* + get ID of user extension set * + get ID of user extension set
* + delete user extension set * + delete user extension set
* *
* COPYRIGHT (c) 1989-2007. * COPYRIGHT (c) 1989-2008.
* On-Line Applications Research Corporation (OAR). * On-Line Applications Research Corporation (OAR).
* *
* The license and distribution terms for this file may be * The license and distribution terms for this file may be
@@ -82,9 +82,7 @@ typedef struct {
* This routine performs the initialization necessary for this manager. * This routine performs the initialization necessary for this manager.
*/ */
void _Extension_Manager_initialization( void _Extension_Manager_initialization(void);
uint32_t maximum_extensions
);
/* /*
* rtems_extension_create * rtems_extension_create

View File

@@ -17,7 +17,7 @@
*/ */
/* /*
* COPYRIGHT (c) 1989-1999. * COPYRIGHT (c) 1989-2008.
* On-Line Applications Research Corporation (OAR). * On-Line Applications Research Corporation (OAR).
* *
* The license and distribution terms for this file may be * The license and distribution terms for this file may be
@@ -103,11 +103,7 @@ SAPI_IO_EXTERN rtems_driver_address_table *_IO_Driver_address_table;
* This routine performs the initialization necessary for this manager. * This routine performs the initialization necessary for this manager.
*/ */
void _IO_Manager_initialization( void _IO_Manager_initialization(void);
rtems_driver_address_table *driver_table,
uint32_t drivers_in_table,
uint32_t number_of_drivers
);
/* /*
* rtems_io_register_driver * rtems_io_register_driver

View File

@@ -111,67 +111,37 @@ void rtems_initialize_data_structures(void)
* Before this is called, we are not allowed to allocate memory * Before this is called, we are not allowed to allocate memory
* from the Workspace because it is not initialized. * from the Workspace because it is not initialized.
*/ */
_Workspace_Handler_initialization( _Workspace_Handler_initialization();
Configuration.work_space_start,
Configuration.work_space_size
);
_User_extensions_Handler_initialization(
Configuration.number_of_initial_extensions,
Configuration.User_extension_table
);
_User_extensions_Handler_initialization();
_ISR_Handler_initialization(); _ISR_Handler_initialization();
_Objects_Handler_initialization();
_Objects_Handler_initialization(
#if defined(RTEMS_MULTIPROCESSING)
_Configuration_MP_table->node,
_Configuration_MP_table->maximum_nodes,
_Configuration_MP_table->maximum_global_objects
#endif
);
_Objects_Information_table[OBJECTS_INTERNAL_API] = _Internal_Objects;
/* /*
* Initialize the internal allocator Mutex * Initialize the internal support API and allocator Mutex
*/ */
_Objects_Information_table[OBJECTS_INTERNAL_API] = _Internal_Objects;
_API_Mutex_Initialization( 1 ); _API_Mutex_Initialization( 1 );
_API_Mutex_Allocate( &_RTEMS_Allocator_Mutex ); _API_Mutex_Allocate( &_RTEMS_Allocator_Mutex );
_Priority_Handler_initialization(); _Priority_Handler_initialization();
_Watchdog_Handler_initialization(); _Watchdog_Handler_initialization();
_TOD_Handler_initialization();
_TOD_Handler_initialization( Configuration.microseconds_per_tick ); _Thread_Handler_initialization();
_Thread_Handler_initialization(
Configuration.ticks_per_timeslice,
Configuration.maximum_extensions
#if defined(RTEMS_MULTIPROCESSING)
,
_Configuration_MP_table->maximum_proxies
#endif
);
#if defined(RTEMS_MULTIPROCESSING) #if defined(RTEMS_MULTIPROCESSING)
_MPCI_Handler_initialization( _MPCI_Handler_initialization( RTEMS_TIMEOUT );
_Configuration_MP_table->User_mpci_table,
RTEMS_TIMEOUT
);
#endif #endif
/* MANAGERS */ /* MANAGERS */
_RTEMS_API_Initialize(); _RTEMS_API_Initialize();
_Extension_Manager_initialization( Configuration.maximum_extensions ); _Extension_Manager_initialization();
_IO_Manager_initialization( _IO_Manager_initialization();
Configuration.Device_driver_table,
Configuration.number_of_device_drivers,
Configuration.maximum_drivers
);
#ifdef RTEMS_POSIX_API #ifdef RTEMS_POSIX_API
_POSIX_API_Initialize(); _POSIX_API_Initialize();

View File

@@ -1,7 +1,7 @@
/* /*
* Extension Manager * Extension Manager
* *
* COPYRIGHT (c) 1989-2007. * COPYRIGHT (c) 1989-2008.
* On-Line Applications Research Corporation (OAR). * On-Line Applications Research Corporation (OAR).
* *
* The license and distribution terms for this file may be * The license and distribution terms for this file may be
@@ -16,6 +16,7 @@
#endif #endif
#include <rtems/system.h> #include <rtems/system.h>
#include <rtems/config.h>
#include <rtems/rtems/support.h> #include <rtems/rtems/support.h>
#include <rtems/score/object.h> #include <rtems/score/object.h>
#include <rtems/score/thread.h> #include <rtems/score/thread.h>
@@ -27,21 +28,18 @@
* *
* This routine initializes all extension manager related data structures. * This routine initializes all extension manager related data structures.
* *
* Input parameters: * Input parameters: NONE
* maximum_extensions - number of extensions to initialize
* *
* Output parameters: NONE * Output parameters: NONE
*/ */
void _Extension_Manager_initialization( void _Extension_Manager_initialization(void)
uint32_t maximum_extensions
)
{ {
_Objects_Initialize_information( _Objects_Initialize_information(
&_Extension_Information, &_Extension_Information,
OBJECTS_CLASSIC_API, /* object API */ OBJECTS_CLASSIC_API, /* object API */
OBJECTS_RTEMS_EXTENSIONS, OBJECTS_RTEMS_EXTENSIONS,
maximum_extensions, Configuration.maximum_extensions,
sizeof( Extension_Control ), sizeof( Extension_Control ),
false, /* true if the name is a string */ false, /* true if the name is a string */
RTEMS_MAXIMUM_NAME_LENGTH /* maximum length of an object name */ RTEMS_MAXIMUM_NAME_LENGTH /* maximum length of an object name */

View File

@@ -1,7 +1,7 @@
/* /*
* Input/Output Manager - Initialize Device Driver Subsystem * Input/Output Manager - Initialize Device Driver Subsystem
* *
* COPYRIGHT (c) 1989-2007. * COPYRIGHT (c) 1989-2008.
* On-Line Applications Research Corporation (OAR). * On-Line Applications Research Corporation (OAR).
* *
* The license and distribution terms for this file may be * The license and distribution terms for this file may be
@@ -16,6 +16,7 @@
#endif #endif
#include <rtems/system.h> #include <rtems/system.h>
#include <rtems/config.h>
#include <rtems/io.h> #include <rtems/io.h>
#include <rtems/score/isr.h> #include <rtems/score/isr.h>
#include <rtems/score/thread.h> #include <rtems/score/thread.h>
@@ -32,13 +33,16 @@
* *
*/ */
void _IO_Manager_initialization( void _IO_Manager_initialization(void)
rtems_driver_address_table *driver_table,
uint32_t drivers_in_table,
uint32_t number_of_drivers
)
{ {
uint32_t index; uint32_t index;
rtems_driver_address_table *driver_table;
uint32_t drivers_in_table;
uint32_t number_of_drivers;
driver_table = Configuration.Device_driver_table;
drivers_in_table = Configuration.number_of_device_drivers;
number_of_drivers = Configuration.maximum_drivers;
/* /*
* If the user claims there are less drivers than are actually in * If the user claims there are less drivers than are actually in

View File

@@ -6,7 +6,7 @@
*/ */
/* /*
* COPYRIGHT (c) 1989-2006. * COPYRIGHT (c) 1989-2008.
* On-Line Applications Research Corporation (OAR). * On-Line Applications Research Corporation (OAR).
* *
* The license and distribution terms for this file may be * The license and distribution terms for this file may be
@@ -197,15 +197,11 @@ SCORE_EXTERN MPCI_Packet_processor
/** /**
* This routine performs the initialization necessary for this handler. * This routine performs the initialization necessary for this handler.
* *
* @param[in] users_mpci_table is a pointer to the application configured
* MPCI Table. This table contains pointers to the MPCI Layers
* entry points.
* @param[in] timeout_status is the value which should be returned to * @param[in] timeout_status is the value which should be returned to
* blocking threads when they timeout on a remote operation. * blocking threads when they timeout on a remote operation.
*/ */
void _MPCI_Handler_initialization( void _MPCI_Handler_initialization(
MPCI_Control *users_mpci_table, uint32_t timeout_status
uint32_t timeout_status
); );
/** /**

View File

@@ -434,26 +434,10 @@ SCORE_EXTERN Objects_Information
*/ */
#define OBJECTS_ID_FINAL ((Objects_Id)~0) #define OBJECTS_ID_FINAL ((Objects_Id)~0)
#if defined(RTEMS_MULTIPROCESSING)
/**
* This function performs the initialization necessary for this handler.
*
* @param[in] node indicates the identifying number of this node.
* @param[in] maximum_nodes is the maximum number of nodes in this system.
* @param[in] maximum_global_objects is maximum number of global objects
* concurrently offered in the system.
*/
void _Objects_Handler_initialization(
uint32_t node,
uint32_t maximum_nodes,
uint32_t maximum_global_objects
);
#else
/** /**
* This function performs the initialization necessary for this handler. * This function performs the initialization necessary for this handler.
*/ */
void _Objects_Handler_initialization(void); void _Objects_Handler_initialization(void);
#endif
/** /**
* This function extends an object class information record. * This function extends an object class information record.

View File

@@ -506,21 +506,14 @@ SCORE_EXTERN struct _reent **_Thread_libc_reent;
/** /**
* This routine performs the initialization necessary for this handler. * This routine performs the initialization necessary for this handler.
*/ */
void _Thread_Handler_initialization ( void _Thread_Handler_initialization(void);
uint32_t ticks_per_timeslice,
uint32_t maximum_extensions
#if defined(RTEMS_MULTIPROCESSING)
,
uint32_t maximum_proxies
#endif
);
/** /**
* This routine creates the idle thread. * This routine creates the idle thread.
* *
* @warning No thread should be created before this one. * @warning No thread should be created before this one.
*/ */
void _Thread_Create_idle( void ); void _Thread_Create_idle(void);
/** /**
* This routine initiates multitasking. It is invoked only as * This routine initiates multitasking. It is invoked only as

View File

@@ -144,9 +144,7 @@ SCORE_EXTERN Timestamp_Control _TOD_Uptime;
* *
* This routine performs the initialization necessary for this handler. * This routine performs the initialization necessary for this handler.
*/ */
void _TOD_Handler_initialization( void _TOD_Handler_initialization(void);
uint32_t microseconds_per_tick
);
/** @brief _TOD_Set /** @brief _TOD_Set
* *

View File

@@ -7,7 +7,7 @@
*/ */
/* /*
* COPYRIGHT (c) 1989-2006. * COPYRIGHT (c) 1989-2008.
* On-Line Applications Research Corporation (OAR). * On-Line Applications Research Corporation (OAR).
* *
* The license and distribution terms for this file may be * The license and distribution terms for this file may be
@@ -205,14 +205,8 @@ SCORE_EXTERN Chain_Control _User_extensions_Switches_list;
/** @brief User extensions Handler Initialization /** @brief User extensions Handler Initialization
* *
* This routine performs the initialization necessary for this handler. * This routine performs the initialization necessary for this handler.
*
* @param[in] number_of_extensions is the number of extensions
* @param[in] initial_extensions is the initial extension set
*/ */
void _User_extensions_Handler_initialization ( void _User_extensions_Handler_initialization(void);
uint32_t number_of_extensions,
User_extensions_Table *initial_extensions
);
/** @brief User extensions Add to API extension set /** @brief User extensions Add to API extension set
* *

View File

@@ -7,7 +7,7 @@
*/ */
/* /*
* COPYRIGHT (c) 1989-2006. * COPYRIGHT (c) 1989-2008.
* On-Line Applications Research Corporation (OAR). * On-Line Applications Research Corporation (OAR).
* *
* The license and distribution terms for this file may be * The license and distribution terms for this file may be
@@ -45,15 +45,8 @@ SCORE_EXTERN Heap_Control _Workspace_Area; /* executive heap header */
/** @brief Workspace Handler Initialization /** @brief Workspace Handler Initialization
* *
* This routine performs the initialization necessary for this handler. * This routine performs the initialization necessary for this handler.
*
* @param[in] starting_address is the base address of the RTEMS Executive
* Workspace
* @param[in] size is the number of bytes in the RTEMS Executive Workspace
*/ */
void _Workspace_Handler_initialization( void _Workspace_Handler_initialization(void);
void *starting_address,
size_t size
);
/** @brief Allocate Memory from Workspace /** @brief Allocate Memory from Workspace
* *

View File

@@ -2,7 +2,7 @@
* Time of Day (TOD) Handler * Time of Day (TOD) Handler
*/ */
/* COPYRIGHT (c) 1989-2007. /* COPYRIGHT (c) 1989-2008.
* On-Line Applications Research Corporation (OAR). * On-Line Applications Research Corporation (OAR).
* *
* The license and distribution terms for this file may be * The license and distribution terms for this file may be
@@ -28,15 +28,12 @@
* *
* This routine initializes the time of day handler. * This routine initializes the time of day handler.
* *
* Input parameters: * Input parameters: NONE
* microseconds_per_tick - microseconds between clock ticks
* *
* Output parameters: NONE * Output parameters: NONE
*/ */
void _TOD_Handler_initialization( void _TOD_Handler_initialization(void)
uint32_t microseconds_per_tick
)
{ {
/* POSIX format TOD (timespec) */ /* POSIX format TOD (timespec) */
_Timestamp_Set( &_TOD_Now, TOD_SECONDS_1970_THROUGH_1988, 0 ); _Timestamp_Set( &_TOD_Now, TOD_SECONDS_1970_THROUGH_1988, 0 );

View File

@@ -2,7 +2,7 @@
* Multiprocessing Communications Interface (MPCI) Handler * Multiprocessing Communications Interface (MPCI) Handler
* *
* *
* COPYRIGHT (c) 1989-2007. * COPYRIGHT (c) 1989-2008.
* On-Line Applications Research Corporation (OAR). * On-Line Applications Research Corporation (OAR).
* *
* The license and distribution terms for this file may be * The license and distribution terms for this file may be
@@ -21,6 +21,7 @@
#include <rtems/score/mpci.h> #include <rtems/score/mpci.h>
#include <rtems/score/mppkt.h> #include <rtems/score/mppkt.h>
#endif #endif
#include <rtems/config.h>
#include <rtems/score/cpu.h> #include <rtems/score/cpu.h>
#include <rtems/score/interr.h> #include <rtems/score/interr.h>
#include <rtems/score/states.h> #include <rtems/score/states.h>
@@ -46,11 +47,13 @@ CORE_semaphore_Control _MPCI_Semaphore;
*/ */
void _MPCI_Handler_initialization( void _MPCI_Handler_initialization(
MPCI_Control *users_mpci_table, uint32_t timeout_status
uint32_t timeout_status
) )
{ {
CORE_semaphore_Attributes attributes; CORE_semaphore_Attributes attributes;
MPCI_Control *users_mpci_table;
users_mpci_table = _Configuration_MP_table->User_mpci_table;
if ( _System_state_Is_multiprocessing && !users_mpci_table ) if ( _System_state_Is_multiprocessing && !users_mpci_table )
_Internal_error_Occurred( _Internal_error_Occurred(

View File

@@ -2,7 +2,7 @@
* Object Handler * Object Handler
* *
* *
* COPYRIGHT (c) 1989-2007. * COPYRIGHT (c) 1989-2008.
* On-Line Applications Research Corporation (OAR). * On-Line Applications Research Corporation (OAR).
* *
* The license and distribution terms for this file may be * The license and distribution terms for this file may be
@@ -17,6 +17,7 @@
#endif #endif
#include <rtems/system.h> #include <rtems/system.h>
#include <rtems/config.h>
#include <rtems/score/address.h> #include <rtems/score/address.h>
#include <rtems/score/chain.h> #include <rtems/score/chain.h>
#include <rtems/score/object.h> #include <rtems/score/object.h>
@@ -34,24 +35,22 @@
* *
* This routine initializes the object handler. * This routine initializes the object handler.
* *
* Input parameters: * Input parameters: NONE
* node - local node
* maximum_nodes - number of nodes in the system
* maximum_global_objects - number of configured global objects
* *
* Output parameters: NONE * Output parameters: NONE
*/ */
#if defined(RTEMS_MULTIPROCESSING)
void _Objects_Handler_initialization(
uint32_t node,
uint32_t maximum_nodes,
uint32_t maximum_global_objects )
#else
void _Objects_Handler_initialization(void) void _Objects_Handler_initialization(void)
#endif
{ {
#if defined(RTEMS_MULTIPROCESSING) #if defined(RTEMS_MULTIPROCESSING)
uint32_t node;
uint32_t maximum_nodes;
uint32_t maximum_global_objects;
node = _Configuration_MP_table->node;
maximum_nodes = _Configuration_MP_table->maximum_nodes;
maximum_global_objects = _Configuration_MP_table->maximum_global_objects;
if ( node < 1 || node > maximum_nodes ) if ( node < 1 || node > maximum_nodes )
_Internal_error_Occurred( _Internal_error_Occurred(
INTERNAL_ERROR_CORE, INTERNAL_ERROR_CORE,

View File

@@ -17,6 +17,7 @@
#endif #endif
#include <rtems/system.h> #include <rtems/system.h>
#include <rtems/config.h>
#include <rtems/score/apiext.h> #include <rtems/score/apiext.h>
#include <rtems/score/context.h> #include <rtems/score/context.h>
#include <rtems/score/interr.h> #include <rtems/score/interr.h>
@@ -37,24 +38,25 @@
* *
* This routine initializes all thread manager related data structures. * This routine initializes all thread manager related data structures.
* *
* Input parameters: * Input parameters: NONE
* ticks_per_timeslice - clock ticks per quantum
* maximum_proxies - number of proxies to initialize
* *
* Output parameters: NONE * Output parameters: NONE
*/ */
void _Thread_Handler_initialization( void _Thread_Handler_initialization(void)
uint32_t ticks_per_timeslice,
uint32_t maximum_extensions
#if defined(RTEMS_MULTIPROCESSING)
,
uint32_t maximum_proxies
#endif
)
{ {
uint32_t index; uint32_t index;
uint32_t ticks_per_timeslice;
uint32_t maximum_extensions;
#if defined(RTEMS_MULTIPROCESSING)
uint32_t maximum_proxies;
#endif
ticks_per_timeslice = Configuration.ticks_per_timeslice;
maximum_extensions = Configuration.maximum_extensions;
#if defined(RTEMS_MULTIPROCESSING)
maximum_proxies = _Configuration_MP_table->maximum_proxies;
#endif
/* /*
* BOTH stacks hooks must be set or both must be NULL. * BOTH stacks hooks must be set or both must be NULL.
* Do not allow mixture. * Do not allow mixture.

View File

@@ -1,5 +1,5 @@
/* /*
* COPYRIGHT (c) 1989-2007. * COPYRIGHT (c) 1989-2008.
* On-Line Applications Research Corporation (OAR). * On-Line Applications Research Corporation (OAR).
* *
* The license and distribution terms for this file may be * The license and distribution terms for this file may be
@@ -14,6 +14,7 @@
#endif #endif
#include <rtems/system.h> #include <rtems/system.h>
#include <rtems/config.h>
#include <rtems/score/userext.h> #include <rtems/score/userext.h>
#include <rtems/score/wkspace.h> #include <rtems/score/wkspace.h>
#include <string.h> #include <string.h>
@@ -22,13 +23,15 @@
* This routine performs the initialization necessary for this handler. * This routine performs the initialization necessary for this handler.
*/ */
void _User_extensions_Handler_initialization ( void _User_extensions_Handler_initialization(void)
uint32_t number_of_extensions,
User_extensions_Table *initial_extensions
)
{ {
User_extensions_Control *extension; User_extensions_Control *extension;
uint32_t i; uint32_t i;
uint32_t number_of_extensions;
User_extensions_Table *initial_extensions;
number_of_extensions = Configuration.number_of_initial_extensions;
initial_extensions = Configuration.User_extension_table;
_Chain_Initialize_empty( &_User_extensions_List ); _Chain_Initialize_empty( &_User_extensions_List );
_Chain_Initialize_empty( &_User_extensions_Switches_list ); _Chain_Initialize_empty( &_User_extensions_Switches_list );

View File

@@ -16,6 +16,7 @@
#endif #endif
#include <rtems/system.h> #include <rtems/system.h>
#include <rtems/config.h>
#include <rtems/score/wkspace.h> #include <rtems/score/wkspace.h>
#include <rtems/score/interr.h> #include <rtems/score/interr.h>
#include <rtems/config.h> #include <rtems/config.h>
@@ -25,12 +26,14 @@
/* /*
* _Workspace_Handler_initialization * _Workspace_Handler_initialization
*/ */
void _Workspace_Handler_initialization( void _Workspace_Handler_initialization(void)
void *starting_address,
size_t size
)
{ {
uint32_t memory_available; uint32_t memory_available;
void *starting_address;
size_t size;
starting_address = Configuration.work_space_start;
size = Configuration.work_space_size;
if ( !starting_address || !_Addresses_Is_aligned( starting_address ) ) if ( !starting_address || !_Addresses_Is_aligned( starting_address ) )
_Internal_error_Occurred( _Internal_error_Occurred(