summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--cpukit/ChangeLog22
-rw-r--r--cpukit/itron/include/rtems/itron/itronapi.h21
-rw-r--r--cpukit/libmisc/capture/capture.c2
-rw-r--r--cpukit/libmisc/monitor/mon-config.c6
-rw-r--r--cpukit/libmisc/monitor/mon-driver.c2
-rw-r--r--cpukit/libmisc/monitor/mon-itask.c5
-rw-r--r--cpukit/libmisc/monitor/mon-mpci.c4
-rw-r--r--cpukit/posix/include/rtems/posix/config.h17
-rw-r--r--cpukit/posix/include/rtems/posix/posixapi.h19
-rw-r--r--cpukit/rtems/include/rtems/rtems/config.h10
-rw-r--r--cpukit/rtems/include/rtems/rtems/rtemsapi.h6
-rw-r--r--cpukit/rtems/src/taskinitusers.c5
-rw-r--r--cpukit/sapi/include/confdefs.h17
-rw-r--r--cpukit/sapi/include/rtems/config.h55
-rw-r--r--cpukit/sapi/include/rtems/init.h6
-rw-r--r--cpukit/sapi/src/exinit.c149
-rw-r--r--cpukit/sapi/src/itronapi.c64
-rw-r--r--cpukit/sapi/src/posixapi.c68
-rw-r--r--cpukit/sapi/src/rtemsapi.c34
-rw-r--r--cpukit/score/src/isr.c8
-rw-r--r--cpukit/score/src/thread.c6
-rw-r--r--cpukit/score/src/threadcreateidle.c4
-rw-r--r--cpukit/score/src/threadstackallocate.c6
-rw-r--r--cpukit/score/src/threadstackfree.c6
-rw-r--r--cpukit/score/src/wkspace.c4
25 files changed, 246 insertions, 300 deletions
diff --git a/cpukit/ChangeLog b/cpukit/ChangeLog
index 7fc0d4c91f..944bc3afc9 100644
--- a/cpukit/ChangeLog
+++ b/cpukit/ChangeLog
@@ -1,5 +1,27 @@
2008-12-15 Joel Sherrill <joel.sherrill@oarcorp.com>
+ * itron/include/rtems/itron/itronapi.h, libmisc/capture/capture.c,
+ libmisc/monitor/mon-config.c, libmisc/monitor/mon-driver.c,
+ libmisc/monitor/mon-itask.c, libmisc/monitor/mon-mpci.c,
+ posix/include/rtems/posix/config.h,
+ posix/include/rtems/posix/posixapi.h,
+ rtems/include/rtems/rtems/config.h,
+ rtems/include/rtems/rtems/rtemsapi.h, rtems/src/taskinitusers.c,
+ sapi/include/confdefs.h, sapi/include/rtems/config.h,
+ sapi/include/rtems/init.h, sapi/src/exinit.c, sapi/src/itronapi.c,
+ sapi/src/posixapi.c, sapi/src/rtemsapi.c, score/src/isr.c,
+ score/src/thread.c, score/src/threadcreateidle.c,
+ score/src/threadstackallocate.c, score/src/threadstackfree.c,
+ score/src/wkspace.c: Eliminate pointers to API configuration tables
+ in the main configuration table. Reference the main configuration
+ table and the API configuration tables directly using the confdefs.h
+ version rather than obtaining a pointer to it. This eliminated some
+ variables, a potential fatal error, some unnecessary default
+ configuration structures. Overall, about a 4.5% reduction in the code
+ size for minimum and hello on the SPARC.
+
+2008-12-15 Joel Sherrill <joel.sherrill@oarcorp.com>
+
* rtems/include/rtems/rtems/types.h: Fix incorrect type name.
2008-12-14 Joel Sherrill <joel.sherrill@oarcorp.com>
diff --git a/cpukit/itron/include/rtems/itron/itronapi.h b/cpukit/itron/include/rtems/itron/itronapi.h
index b56b963610..e9b1266eef 100644
--- a/cpukit/itron/include/rtems/itron/itronapi.h
+++ b/cpukit/itron/include/rtems/itron/itronapi.h
@@ -3,9 +3,7 @@
*/
/*
- * ITRON API Support
- *
- * COPYRIGHT (c) 1989-1999.
+ * COPYRIGHT (c) 1989-2008.
* On-Line Applications Research Corporation (OAR).
*
* The license and distribution terms for this file may be
@@ -20,15 +18,20 @@
#include <rtems/config.h>
-/*
- * _ITRON_API_Initialize
+/**
+ * @brief Initialize ITRON API
*
- * Initialize the ITRON API.
+ * This method is used to initialize the ITRON API.
*/
+void _ITRON_API_Initialize(void);
-void _ITRON_API_Initialize(
- rtems_configuration_table *configuration_table
-);
+/**
+ * @brief ITRON API Cofniguration Table
+ *
+ * This is the ITRON API Configuration Table expected to be generated
+ * by confdefs.h.
+ */
+extern itron_api_configuration_table Configuration_ITRON_API;
#endif
/* end of include file */
diff --git a/cpukit/libmisc/capture/capture.c b/cpukit/libmisc/capture/capture.c
index 15d84927e0..00b71f7480 100644
--- a/cpukit/libmisc/capture/capture.c
+++ b/cpukit/libmisc/capture/capture.c
@@ -1039,7 +1039,7 @@ rtems_capture_open (uint32_t size, rtems_capture_timestamp timestamp)
/*
* Get the tick period from the BSP Configuration Table.
*/
- capture_tick_period = _Configuration_Table->microseconds_per_tick;
+ capture_tick_period = Configuration.microseconds_per_tick;
/*
* Register the user extension handlers for the CAPture Engine.
diff --git a/cpukit/libmisc/monitor/mon-config.c b/cpukit/libmisc/monitor/mon-config.c
index b1f8f185fd..f950a93761 100644
--- a/cpukit/libmisc/monitor/mon-config.c
+++ b/cpukit/libmisc/monitor/mon-config.c
@@ -33,9 +33,9 @@ rtems_monitor_config_canonical(
)
{
rtems_configuration_table *c = (rtems_configuration_table *) config_void;
- rtems_api_configuration_table *r = c->RTEMS_api_configuration;
+ rtems_api_configuration_table *r = &Configuration_RTEMS_API;
- canonical_config->work_space_start = c->work_space_start;
+ canonical_config->work_space_start = NULL; /* no longer in structure */
canonical_config->work_space_size = c->work_space_size;
canonical_config->maximum_tasks = r->maximum_tasks;
canonical_config->maximum_timers = r->maximum_timers;
@@ -63,7 +63,7 @@ rtems_monitor_config_next(
rtems_id *next_id
)
{
- rtems_configuration_table *c = _Configuration_Table;
+ rtems_configuration_table *c = &Configuration;
int n = rtems_object_id_get_index(*next_id);
if (n >= 1)
diff --git a/cpukit/libmisc/monitor/mon-driver.c b/cpukit/libmisc/monitor/mon-driver.c
index 12c8d5f50c..1f0f7ced74 100644
--- a/cpukit/libmisc/monitor/mon-driver.c
+++ b/cpukit/libmisc/monitor/mon-driver.c
@@ -67,7 +67,7 @@ rtems_monitor_driver_next(
rtems_id *next_id
)
{
- rtems_configuration_table *c = _Configuration_Table;
+ rtems_configuration_table *c = &Configuration;
uint32_t n = rtems_object_id_get_index(*next_id);
if (n >= c->number_of_device_drivers)
diff --git a/cpukit/libmisc/monitor/mon-itask.c b/cpukit/libmisc/monitor/mon-itask.c
index 30f6f95a62..9f39d5ac34 100644
--- a/cpukit/libmisc/monitor/mon-itask.c
+++ b/cpukit/libmisc/monitor/mon-itask.c
@@ -43,16 +43,15 @@ rtems_monitor_init_task_next(
rtems_id *next_id
)
{
- rtems_configuration_table *c = _Configuration_Table;
rtems_initialization_tasks_table *itask;
uint32_t n = rtems_object_id_get_index(*next_id);
- if (n >= c->RTEMS_api_configuration->number_of_initialization_tasks)
+ if (n >= Configuration_RTEMS_API.number_of_initialization_tasks)
goto failed;
_Thread_Disable_dispatch();
- itask = c->RTEMS_api_configuration->User_initialization_tasks_table + n;
+ itask = Configuration_RTEMS_API.User_initialization_tasks_table + n;
/*
* dummy up a fake id and name for this item
diff --git a/cpukit/libmisc/monitor/mon-mpci.c b/cpukit/libmisc/monitor/mon-mpci.c
index d9963c345c..ab77431241 100644
--- a/cpukit/libmisc/monitor/mon-mpci.c
+++ b/cpukit/libmisc/monitor/mon-mpci.c
@@ -31,7 +31,7 @@ rtems_monitor_mpci_canonical(
void *config_void
)
{
- rtems_configuration_table *c = _Configuration_Table;
+ rtems_configuration_table *c = &Configuration;
rtems_multiprocessing_table *m;
rtems_mpci_table *mt;
@@ -73,7 +73,7 @@ rtems_monitor_mpci_next(
rtems_id *next_id
)
{
- rtems_configuration_table *c = _Configuration_Table;
+ rtems_configuration_table *c = &Configuration;
int n = rtems_object_id_get_index(*next_id);
if (n >= 1)
diff --git a/cpukit/posix/include/rtems/posix/config.h b/cpukit/posix/include/rtems/posix/config.h
index 669c6151dd..2d83d26be5 100644
--- a/cpukit/posix/include/rtems/posix/config.h
+++ b/cpukit/posix/include/rtems/posix/config.h
@@ -1,13 +1,12 @@
/**
* @file rtems/posix/config.h
- */
-
-/* config.h
*
* This include file contains the table of user defined configuration
* parameters specific for the POSIX API.
- *
- * COPYRIGHT (c) 1989-1999.
+ */
+
+/*
+ * COPYRIGHT (c) 1989-2008.
* On-Line Applications Research Corporation (OAR).
*
* The license and distribution terms for this file may be
@@ -61,6 +60,14 @@ typedef struct {
posix_initialization_threads_table *User_initialization_threads_table;
} posix_api_configuration_table;
+/**
+ * @brief POSIX API Cofniguration Table
+ *
+ * This is the POSIX API Configuration Table expected to be generated
+ * by confdefs.h.
+ */
+extern posix_api_configuration_table Configuration_POSIX_API;
+
#ifdef __cplusplus
}
#endif
diff --git a/cpukit/posix/include/rtems/posix/posixapi.h b/cpukit/posix/include/rtems/posix/posixapi.h
index af19c4fd07..729a6db163 100644
--- a/cpukit/posix/include/rtems/posix/posixapi.h
+++ b/cpukit/posix/include/rtems/posix/posixapi.h
@@ -3,11 +3,7 @@
*/
/*
- * POSIX API Support
- *
- * NOTE:
- *
- * COPYRIGHT (c) 1989-1999.
+ * COPYRIGHT (c) 1989-2008.
* On-Line Applications Research Corporation (OAR).
*
* The license and distribution terms for this file may be
@@ -22,16 +18,13 @@
#include <rtems/config.h>
-/*PAGE
- *
- * _POSIX_API_Initialize
+/**
+ * @brief Initialize POSIX API
*
- * XXX
+ * This method is responsible for initializing each of the POSIX
+ * API managers.
*/
-
-void _POSIX_API_Initialize(
- rtems_configuration_table *configuration_table
-);
+void _POSIX_API_Initialize(void);
#endif
/* end of include file */
diff --git a/cpukit/rtems/include/rtems/rtems/config.h b/cpukit/rtems/include/rtems/rtems/config.h
index 05b232482f..dc69af0067 100644
--- a/cpukit/rtems/include/rtems/rtems/config.h
+++ b/cpukit/rtems/include/rtems/rtems/config.h
@@ -117,6 +117,16 @@ typedef struct {
} rtems_api_configuration_table;
/**
+ * @brief RTEMS API Configuration Table
+ *
+ * This is the RTEMS API Configuration Table expected to be generated
+ * by confdefs.h.
+ */
+extern rtems_api_configuration_table Configuration_RTEMS_API;
+
+/**@}*/
+
+/**
* This macro returns the value of the notepads enabled field
* in the Classic API configuration table.
*/
diff --git a/cpukit/rtems/include/rtems/rtems/rtemsapi.h b/cpukit/rtems/include/rtems/rtems/rtemsapi.h
index 5f32085ef6..da703813e3 100644
--- a/cpukit/rtems/include/rtems/rtems/rtemsapi.h
+++ b/cpukit/rtems/include/rtems/rtems/rtemsapi.h
@@ -31,11 +31,7 @@
* routine for each RTEMS manager with the appropriate parameters
* from the configuration_table.
*/
-void _RTEMS_API_Initialize(
- rtems_configuration_table *configuration_table
-);
-
-/**@}*/
+void _RTEMS_API_Initialize(void);
#endif
/* end of include file */
diff --git a/cpukit/rtems/src/taskinitusers.c b/cpukit/rtems/src/taskinitusers.c
index 38e470f408..0e5a19a35e 100644
--- a/cpukit/rtems/src/taskinitusers.c
+++ b/cpukit/rtems/src/taskinitusers.c
@@ -2,7 +2,7 @@
* RTEMS Task Manager
*
*
- * COPYRIGHT (c) 1989-2007.
+ * COPYRIGHT (c) 1989-2008.
* On-Line Applications Research Corporation (OAR).
*
* The license and distribution terms for this file may be
@@ -22,6 +22,7 @@
#include <rtems/rtems/support.h>
#include <rtems/rtems/modes.h>
#include <rtems/score/object.h>
+#include <rtems/rtems/rtemsapi.h>
#include <rtems/score/stack.h>
#include <rtems/score/states.h>
#include <rtems/rtems/tasks.h>
@@ -55,7 +56,7 @@ void _RTEMS_tasks_Initialize_user_tasks_body( void )
rtems_api_configuration_table *api_configuration;
- api_configuration = _Configuration_Table->RTEMS_api_configuration;
+ api_configuration = &Configuration_RTEMS_API;
/*
* NOTE: This is slightly different from the Ada implementation.
diff --git a/cpukit/sapi/include/confdefs.h b/cpukit/sapi/include/confdefs.h
index ac6fff9025..9c19ce9645 100644
--- a/cpukit/sapi/include/confdefs.h
+++ b/cpukit/sapi/include/confdefs.h
@@ -805,10 +805,6 @@ rtems_fs_init_functions_t rtems_fs_init_helper =
#ifndef CONFIGURE_HAS_OWN_CONFIGURATION_TABLE
- #ifndef CONFIGURE_EXECUTIVE_RAM_WORK_AREA
- #define CONFIGURE_EXECUTIVE_RAM_WORK_AREA NULL
- #endif
-
#ifndef CONFIGURE_MAXIMUM_TASKS
#define CONFIGURE_MAXIMUM_TASKS 0
#endif
@@ -1856,7 +1852,7 @@ rtems_fs_init_functions_t rtems_fs_init_helper =
* This is the primary Configuration Table for this application.
*/
rtems_configuration_table Configuration = {
- CONFIGURE_EXECUTIVE_RAM_WORK_AREA,
+ NULL, /* filled in by BSP */
CONFIGURE_EXECUTIVE_RAM_SIZE, /* required RTEMS workspace */
CONFIGURE_MAXIMUM_USER_EXTENSIONS, /* maximum dynamic extensions */
CONFIGURE_MICROSECONDS_PER_TICK, /* microseconds per clock tick */
@@ -1875,17 +1871,6 @@ rtems_fs_init_functions_t rtems_fs_init_helper =
#if defined(RTEMS_MULTIPROCESSING)
CONFIGURE_MULTIPROCESSING_TABLE, /* pointer to MP config table */
#endif
- &Configuration_RTEMS_API, /* pointer to RTEMS API config */
- #ifdef RTEMS_POSIX_API
- &Configuration_POSIX_API, /* pointer to POSIX API config */
- #else
- NULL, /* pointer to POSIX API config */
- #endif
- #ifdef RTEMS_ITRON_API
- &Configuration_ITRON_API /* pointer to ITRON API config */
- #else
- NULL /* pointer to ITRON API config */
- #endif
};
#endif
diff --git a/cpukit/sapi/include/rtems/config.h b/cpukit/sapi/include/rtems/config.h
index d0af0172d9..ad3f923965 100644
--- a/cpukit/sapi/include/rtems/config.h
+++ b/cpukit/sapi/include/rtems/config.h
@@ -170,21 +170,20 @@ typedef struct {
rtems_driver_address_table *Device_driver_table;
uint32_t number_of_initial_extensions;
rtems_extensions_table *User_extension_table;
-#if defined(RTEMS_MULTIPROCESSING)
- rtems_multiprocessing_table *User_multiprocessing_table;
-#endif
- rtems_api_configuration_table *RTEMS_api_configuration;
- posix_api_configuration_table *POSIX_api_configuration;
- itron_api_configuration_table *ITRON_api_configuration;
+ #if defined(RTEMS_MULTIPROCESSING)
+ rtems_multiprocessing_table *User_multiprocessing_table;
+ #endif
} rtems_configuration_table;
-/*
- * The following are provided strictly for the convenience of
- * the user. They are not used in RTEMS itself.
+/**
+ * This is the configuration table generated by confdefs.h.
*/
+extern rtems_configuration_table Configuration;
-SAPI_EXTERN rtems_configuration_table *_Configuration_Table;
#if defined(RTEMS_MULTIPROCESSING)
+ /**
+ * This points to the multiprocessing configuration table.
+ */
SAPI_EXTERN rtems_multiprocessing_table *_Configuration_MP_table;
#endif
@@ -194,7 +193,7 @@ SAPI_EXTERN rtems_configuration_table *_Configuration_Table;
*/
#define rtems_configuration_get_table() \
- (&_Configuration_Table)
+ (&Configuration)
#define rtems_configuration_get_work_space_start() \
(Configuration.work_space_start)
@@ -203,21 +202,21 @@ SAPI_EXTERN rtems_configuration_table *_Configuration_Table;
(Configuration.work_space_size)
#define rtems_configuration_get_maximum_extensions() \
- (_Configuration_Table->maximum_extensions)
+ (Configuration.maximum_extensions)
#define rtems_configuration_get_microseconds_per_tick() \
- (_Configuration_Table->microseconds_per_tick)
+ (Configuration.microseconds_per_tick)
#define rtems_configuration_get_milliseconds_per_tick() \
- (_Configuration_Table->microseconds_per_tick / 1000)
+ (Configuration.microseconds_per_tick / 1000)
#define rtems_configuration_get_ticks_per_timeslice() \
- (_Configuration_Table->ticks_per_timeslice)
+ (Configuration.ticks_per_timeslice)
#define rtems_configuration_get_idle_task() \
- (_Configuration_Table->idle_task)
+ (Configuration.idle_task)
#define rtems_configuration_get_idle_task_stack_size() \
- (_Configuration_Table->idle_task_stack_size)
+ (Configuration.idle_task_stack_size)
/* XXX We need to get this from the generated table
* since BSPs need it before the pointer is set.
@@ -229,45 +228,45 @@ extern rtems_configuration_table Configuration;
(Configuration.interrupt_stack_size)
#define rtems_configuration_get_stack_allocate_hook() \
- (_Configuration_Table->stack_allocate_hook)
+ (Configuration.stack_allocate_hook)
#define rtems_configuration_get_stack_free_hook() \
- (_Configuration_Table->stack_free_hook)
+ (Configuration.stack_free_hook)
/**
* This macro assists in accessing the field which indicates whether
* RTEMS is responsible for zeroing the Executive Workspace.
*/
#define rtems_configuration_get_do_zero_of_workspace() \
- (_Configuration_Table->do_zero_of_workspace)
+ (Configuration.do_zero_of_workspace)
#define rtems_configuration_get_number_of_device_drivers() \
- (_Configuration_Table->number_of_device_drivers)
+ (Configuration.number_of_device_drivers)
#define rtems_configuration_get_device_driver_table() \
- (_Configuration_Table->device_driver_table)
+ (Configuration.device_driver_table)
#define rtems_configuration_get_number_of_initial_extensions() \
- (_Configuration_Table->number_of_initial_extensions)
+ (Configuration.number_of_initial_extensions)
#define rtems_configuration_get_user_extension_table() \
- (_Configuration_Table->user_extension_table)
+ (Configuration.user_extension_table)
#if defined(RTEMS_MULTIPROCESSING)
#define rtems_configuration_get_user_multiprocessing_table() \
- (_Configuration_Table->User_multiprocessing_table)
+ (Configuration.User_multiprocessing_table)
#else
#define rtems_configuration_get_user_multiprocessing_table() NULL
#endif
#define rtems_configuration_get_rtems_api_configuration() \
- (_Configuration_Table->RTEMS_api_configuration)
+ (&Configuration_RTEMS_API)
#define rtems_configuration_get_posix_api_configuration() \
- (_Configuration_Table->POSIX_api_configuration)
+ (&Configuration_POSIX_API)
#define rtems_configuration_get_itron_api_configuration() \
- (_Configuration_Table->ITRON_api_configuration)
+ (&Configuration_ITRON_API)
#ifdef __cplusplus
}
diff --git a/cpukit/sapi/include/rtems/init.h b/cpukit/sapi/include/rtems/init.h
index bf0fb7fa6a..77d3e0885a 100644
--- a/cpukit/sapi/include/rtems/init.h
+++ b/cpukit/sapi/include/rtems/init.h
@@ -15,7 +15,7 @@
*/
/*
- * COPYRIGHT (c) 1989-1999.
+ * COPYRIGHT (c) 1989-2008.
* On-Line Applications Research Corporation (OAR).
*
* The license and distribution terms for this file may be
@@ -52,9 +52,7 @@ extern const rtems_multiprocessing_table
* that involves initializing data structures to a state that scheduling
* can occur in a consistent manner.
*/
-void rtems_initialize_data_structures(
- rtems_configuration_table *configuration_table
-);
+void rtems_initialize_data_structures(void);
/**
* @brief rtems_initialize_before_drivers
diff --git a/cpukit/sapi/src/exinit.c b/cpukit/sapi/src/exinit.c
index 1b41ed2bb4..4a86dfd240 100644
--- a/cpukit/sapi/src/exinit.c
+++ b/cpukit/sapi/src/exinit.c
@@ -53,19 +53,17 @@
#include <rtems/rtems/rtemsapi.h>
#ifdef RTEMS_POSIX_API
-#include <rtems/posix/posixapi.h>
+ #include <rtems/posix/posixapi.h>
#endif
#ifdef RTEMS_ITRON_API
-#include <rtems/itron/itronapi.h>
+ #include <rtems/itron/itronapi.h>
#endif
Objects_Information *_Internal_Objects[ OBJECTS_INTERNAL_CLASSES_LAST + 1 ];
-void rtems_initialize_data_structures(
- rtems_configuration_table *configuration_table
-)
+void rtems_initialize_data_structures(void)
{
- rtems_interrupt_level bsp_level;
+ rtems_interrupt_level bsp_level;
/*
* Dispatching and interrupts are disabled until the end of the
@@ -75,46 +73,31 @@ void rtems_initialize_data_structures(
_ISR_Disable( bsp_level );
/*
- * Make sure the parameters were not NULL.
- */
- if ( configuration_table == NULL )
- _Internal_error_Occurred(
- INTERNAL_ERROR_CORE,
- TRUE,
- INTERNAL_ERROR_NO_CONFIGURATION_TABLE
- );
-
- /*
- * Provide pointers just for later convenience.
- */
- _Configuration_Table = configuration_table;
-
- /*
* Initialize any target architecture specific support as early as possible
*/
_CPU_Initialize( _Thread_Dispatch );
-#if defined(RTEMS_MULTIPROCESSING)
- /*
- * Initialize the system state based on whether this is an MP system.
- * In an MP configuration, internally we view single processor
- * systems as a very restricted multiprocessor system.
- */
- _Configuration_MP_table = configuration_table->User_multiprocessing_table;
-
- if ( _Configuration_MP_table == NULL ) {
- _Configuration_MP_table =
- (void *)&_Initialization_Default_multiprocessing_table;
+ #if defined(RTEMS_MULTIPROCESSING)
+ /*
+ * Initialize the system state based on whether this is an MP system.
+ * In an MP configuration, internally we view single processor
+ * systems as a very restricted multiprocessor system.
+ */
+ _Configuration_MP_table = Configuration.User_multiprocessing_table;
+
+ if ( _Configuration_MP_table == NULL ) {
+ _Configuration_MP_table =
+ (void *)&_Initialization_Default_multiprocessing_table;
+ _System_state_Handler_initialization( FALSE );
+ } else {
+ _System_state_Handler_initialization( TRUE );
+ }
+ #else
_System_state_Handler_initialization( FALSE );
- } else {
- _System_state_Handler_initialization( TRUE );
- }
-#else
- _System_state_Handler_initialization( FALSE );
-#endif
+ #endif
/*
- * Do this as early as possible to insure no debugging output
+ * Do this as early as possible to ensure no debugging output
* is even attempted to be printed.
*/
@@ -129,23 +112,23 @@ void rtems_initialize_data_structures(
* from the Workspace because it is not initialized.
*/
_Workspace_Handler_initialization(
- (void *)configuration_table->work_space_start,
- configuration_table->work_space_size
+ Configuration.work_space_start,
+ Configuration.work_space_size
);
_User_extensions_Handler_initialization(
- configuration_table->number_of_initial_extensions,
- configuration_table->User_extension_table
+ Configuration.number_of_initial_extensions,
+ Configuration.User_extension_table
);
_ISR_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
+ #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;
@@ -160,43 +143,43 @@ void rtems_initialize_data_structures(
_Watchdog_Handler_initialization();
- _TOD_Handler_initialization( configuration_table->microseconds_per_tick );
+ _TOD_Handler_initialization( Configuration.microseconds_per_tick );
_Thread_Handler_initialization(
- configuration_table->ticks_per_timeslice,
- configuration_table->maximum_extensions
-#if defined(RTEMS_MULTIPROCESSING)
- ,
- _Configuration_MP_table->maximum_proxies
-#endif
+ Configuration.ticks_per_timeslice,
+ Configuration.maximum_extensions
+ #if defined(RTEMS_MULTIPROCESSING)
+ ,
+ _Configuration_MP_table->maximum_proxies
+ #endif
);
-#if defined(RTEMS_MULTIPROCESSING)
- _MPCI_Handler_initialization(
- _Configuration_MP_table->User_mpci_table,
- RTEMS_TIMEOUT
- );
-#endif
+ #if defined(RTEMS_MULTIPROCESSING)
+ _MPCI_Handler_initialization(
+ _Configuration_MP_table->User_mpci_table,
+ RTEMS_TIMEOUT
+ );
+ #endif
/* MANAGERS */
- _RTEMS_API_Initialize( configuration_table );
+ _RTEMS_API_Initialize();
- _Extension_Manager_initialization( configuration_table->maximum_extensions );
+ _Extension_Manager_initialization( Configuration.maximum_extensions );
_IO_Manager_initialization(
- configuration_table->Device_driver_table,
- configuration_table->number_of_device_drivers,
- configuration_table->maximum_drivers
+ Configuration.Device_driver_table,
+ Configuration.number_of_device_drivers,
+ Configuration.maximum_drivers
);
-#ifdef RTEMS_POSIX_API
- _POSIX_API_Initialize( configuration_table );
-#endif
+ #ifdef RTEMS_POSIX_API
+ _POSIX_API_Initialize();
+ #endif
-#ifdef RTEMS_ITRON_API
- _ITRON_API_Initialize( configuration_table );
-#endif
+ #ifdef RTEMS_ITRON_API
+ _ITRON_API_Initialize();
+ #endif
_System_state_Set( SYSTEM_STATE_BEFORE_MULTITASKING );
@@ -218,9 +201,9 @@ void rtems_initialize_data_structures(
void rtems_initialize_before_drivers(void)
{
-#if defined(RTEMS_MULTIPROCESSING)
- _MPCI_Create_server();
-#endif
+ #if defined(RTEMS_MULTIPROCESSING)
+ _MPCI_Create_server();
+ #endif
/*
* Run the API and BSPs predriver hook.
@@ -240,14 +223,14 @@ void rtems_initialize_device_drivers(void)
_IO_Initialize_all_drivers();
-#if defined(RTEMS_MULTIPROCESSING)
- if ( _System_state_Is_multiprocessing ) {
- _MPCI_Initialization();
- _MPCI_Internal_packets_Send_process_packet(
- MPCI_PACKETS_SYSTEM_VERIFY
- );
- }
-#endif
+ #if defined(RTEMS_MULTIPROCESSING)
+ if ( _System_state_Is_multiprocessing ) {
+ _MPCI_Initialization();
+ _MPCI_Internal_packets_Send_process_packet(
+ MPCI_PACKETS_SYSTEM_VERIFY
+ );
+ }
+ #endif
/*
* Run the APIs and BSPs postdriver hooks.
diff --git a/cpukit/sapi/src/itronapi.c b/cpukit/sapi/src/itronapi.c
index 0d44db6801..684ef7b95c 100644
--- a/cpukit/sapi/src/itronapi.c
+++ b/cpukit/sapi/src/itronapi.c
@@ -3,7 +3,7 @@
*
* NOTE:
*
- * COPYRIGHT (c) 1989-1999.
+ * COPYRIGHT (c) 1989-2008.
* On-Line Applications Research Corporation (OAR).
*
* The license and distribution terms for this file may be
@@ -37,6 +37,7 @@
#include <rtems/itron/eventflags.h>
#include <rtems/itron/fmempool.h>
+#include <rtems/itron/itronapi.h>
#include <rtems/itron/mbox.h>
#include <rtems/itron/msgbuffer.h>
#include <rtems/itron/port.h>
@@ -51,72 +52,45 @@
* XXX
*/
-const itron_api_configuration_table _ITRON_Default_configuration = {
- 0, /* maximum_tasks */
- 0, /* maximum_semaphores */
- 0, /* maximum_eventflags */
- 0, /* maximum_mailboxes */
- 0, /* maximum_message_buffers */
- 0, /* maximum_ports */
- 0, /* maximum_memory_pools */
- 0, /* maximum_fixed_memory_pools */
- 0, /* number_of_initialization_tasks */
- NULL /* User_initialization_tasks_table */
-};
-
Objects_Information *_ITRON_Objects[ OBJECTS_ITRON_CLASSES_LAST + 1 ];
-void _ITRON_API_Initialize(
- rtems_configuration_table *configuration_table
-)
+void _ITRON_API_Initialize(void)
{
- const itron_api_configuration_table *api_configuration;
+ const itron_api_configuration_table *api;
/* XXX need to assert here based on size assumptions */
assert( sizeof(ID) == sizeof(Objects_Id) );
- api_configuration = configuration_table->ITRON_api_configuration;
- if ( !api_configuration )
- api_configuration = &_ITRON_Default_configuration;
+ /*
+ * Install our API Object Management Table and initialize the
+ * various managers.
+ */
+ api = &Configuration_ITRON_API;
_Objects_Information_table[OBJECTS_ITRON_API] = _ITRON_Objects;
_ITRON_Task_Manager_initialization(
- api_configuration->maximum_tasks,
- api_configuration->number_of_initialization_tasks,
- api_configuration->User_initialization_tasks_table
+ api->maximum_tasks,
+ api->number_of_initialization_tasks,
+ api->User_initialization_tasks_table
);
- _ITRON_Semaphore_Manager_initialization(
- api_configuration->maximum_semaphores
- );
+ _ITRON_Semaphore_Manager_initialization( api->maximum_semaphores );
- _ITRON_Eventflags_Manager_initialization(
- api_configuration->maximum_eventflags
- );
+ _ITRON_Eventflags_Manager_initialization( api->maximum_eventflags );
_ITRON_Fixed_memory_pool_Manager_initialization(
- api_configuration->maximum_fixed_memory_pools
+ api->maximum_fixed_memory_pools
);
- _ITRON_Mailbox_Manager_initialization(
- api_configuration->maximum_mailboxes
- );
+ _ITRON_Mailbox_Manager_initialization( api->maximum_mailboxes );
- _ITRON_Message_buffer_Manager_initialization(
- api_configuration->maximum_message_buffers
- );
-
- _ITRON_Port_Manager_initialization(
- api_configuration->maximum_ports
- );
-
- _ITRON_Variable_memory_pool_Manager_initialization(
- api_configuration->maximum_memory_pools
- );
+ _ITRON_Message_buffer_Manager_initialization( api->maximum_message_buffers );
+ _ITRON_Port_Manager_initialization( api->maximum_ports );
+ _ITRON_Variable_memory_pool_Manager_initialization(api->maximum_memory_pools);
}
#endif
diff --git a/cpukit/sapi/src/posixapi.c b/cpukit/sapi/src/posixapi.c
index 9ff55ab63e..227949b42e 100644
--- a/cpukit/sapi/src/posixapi.c
+++ b/cpukit/sapi/src/posixapi.c
@@ -3,7 +3,7 @@
*
* NOTE:
*
- * COPYRIGHT (c) 1989-1999.
+ * COPYRIGHT (c) 1989-2008.
* On-Line Applications Research Corporation (OAR).
*
* The license and distribution terms for this file may be
@@ -39,6 +39,7 @@
#include <rtems/posix/key.h>
#include <rtems/posix/mqueue.h>
#include <rtems/posix/mutex.h>
+#include <rtems/posix/posixapi.h>
#include <rtems/posix/priority.h>
#include <rtems/posix/psignal.h>
#include <rtems/posix/pthread.h>
@@ -55,76 +56,51 @@
* XXX
*/
-const posix_api_configuration_table _POSIX_Default_configuration = {
- 0, /* maximum_threads */
- 0, /* maximum_mutexes */
- 0, /* maximum_condition_variables */
- 0, /* maximum_keys */
- 0, /* maximum_timers */
- 0, /* maximum_queued_signals */
- 0, /* number_of_initialization_threads */
- 0, /* maximum_message_queues */
- 0, /* maximum_semaphores */
- 0, /* maximum_barriers */
- 0, /* maximum_spinlocks */
- 0, /* maximum_rwlocks */
- NULL /* User_initialization_threads_table */
-};
-
Objects_Information *_POSIX_Objects[ OBJECTS_POSIX_CLASSES_LAST + 1 ];
-
-void _POSIX_API_Initialize(
- rtems_configuration_table *configuration_table
-)
+void _POSIX_API_Initialize(void)
{
- const posix_api_configuration_table *api_configuration;
+ const posix_api_configuration_table *api;
/* XXX need to assert here based on size assumptions */
assert( sizeof(pthread_t) == sizeof(Objects_Id) );
- api_configuration = configuration_table->POSIX_api_configuration;
- if ( !api_configuration )
- api_configuration = &_POSIX_Default_configuration;
+ /*
+ * Install our API Object Management Table and initialize the
+ * various managers.
+ */
+ api = &Configuration_POSIX_API;
_Objects_Information_table[OBJECTS_POSIX_API] = _POSIX_Objects;
- _POSIX_signals_Manager_Initialization(
- api_configuration->maximum_queued_signals
- );
+ _POSIX_signals_Manager_Initialization( api->maximum_queued_signals );
_POSIX_Threads_Manager_initialization(
- api_configuration->maximum_threads,
- api_configuration->number_of_initialization_threads,
- api_configuration->User_initialization_threads_table
+ api->maximum_threads,
+ api->number_of_initialization_threads,
+ api->User_initialization_threads_table
);
_POSIX_Condition_variables_Manager_initialization(
- api_configuration->maximum_condition_variables
+ api->maximum_condition_variables
);
- _POSIX_Key_Manager_initialization( api_configuration->maximum_keys );
+ _POSIX_Key_Manager_initialization( api->maximum_keys );
- _POSIX_Mutex_Manager_initialization(
- api_configuration->maximum_mutexes
- );
+ _POSIX_Mutex_Manager_initialization( api->maximum_mutexes );
- _POSIX_Message_queue_Manager_initialization(
- api_configuration->maximum_message_queues
- );
+ _POSIX_Message_queue_Manager_initialization( api->maximum_message_queues );
- _POSIX_Semaphore_Manager_initialization(
- api_configuration->maximum_semaphores
- );
+ _POSIX_Semaphore_Manager_initialization( api->maximum_semaphores );
- _POSIX_Timer_Manager_initialization( api_configuration->maximum_timers );
+ _POSIX_Timer_Manager_initialization( api->maximum_timers );
- _POSIX_Barrier_Manager_initialization( api_configuration->maximum_barriers );
+ _POSIX_Barrier_Manager_initialization( api->maximum_barriers );
- _POSIX_RWLock_Manager_initialization( api_configuration->maximum_rwlocks );
+ _POSIX_RWLock_Manager_initialization( api->maximum_rwlocks );
- _POSIX_Spinlock_Manager_initialization(api_configuration->maximum_spinlocks);
+ _POSIX_Spinlock_Manager_initialization(api->maximum_spinlocks);
}
#endif
diff --git a/cpukit/sapi/src/rtemsapi.c b/cpukit/sapi/src/rtemsapi.c
index 89d7411b5f..d9f107e316 100644
--- a/cpukit/sapi/src/rtemsapi.c
+++ b/cpukit/sapi/src/rtemsapi.c
@@ -3,7 +3,7 @@
*
* NOTE:
*
- * COPYRIGHT (c) 1989-1999.
+ * COPYRIGHT (c) 1989-2008.
* On-Line Applications Research Corporation (OAR).
*
* The license and distribution terms for this file may be
@@ -54,13 +54,15 @@ Objects_Information *_RTEMS_Objects[ OBJECTS_RTEMS_CLASSES_LAST + 1 ];
* XXX
*/
-void _RTEMS_API_Initialize(
- rtems_configuration_table *configuration_table
-)
+void _RTEMS_API_Initialize(void)
{
- rtems_api_configuration_table *api_configuration;
+ rtems_api_configuration_table *api;
- api_configuration = configuration_table->RTEMS_api_configuration;
+ /*
+ * Install our API Object Management Table and initialize the
+ * various managers.
+ */
+ api = &Configuration_RTEMS_API;
_Objects_Information_table[OBJECTS_CLASSIC_API] = _RTEMS_Objects;
@@ -72,29 +74,27 @@ void _RTEMS_API_Initialize(
_Multiprocessing_Manager_initialization();
#endif
- _RTEMS_tasks_Manager_initialization( api_configuration->maximum_tasks );
+ _RTEMS_tasks_Manager_initialization( api->maximum_tasks );
- _Timer_Manager_initialization( api_configuration->maximum_timers );
+ _Timer_Manager_initialization( api->maximum_timers );
_Signal_Manager_initialization();
_Event_Manager_initialization();
- _Message_queue_Manager_initialization(
- api_configuration->maximum_message_queues
- );
+ _Message_queue_Manager_initialization( api->maximum_message_queues );
- _Semaphore_Manager_initialization( api_configuration->maximum_semaphores );
+ _Semaphore_Manager_initialization( api->maximum_semaphores );
- _Partition_Manager_initialization( api_configuration->maximum_partitions );
+ _Partition_Manager_initialization( api->maximum_partitions );
- _Region_Manager_initialization( api_configuration->maximum_regions );
+ _Region_Manager_initialization( api->maximum_regions );
- _Dual_ported_memory_Manager_initialization( api_configuration->maximum_ports);
+ _Dual_ported_memory_Manager_initialization( api->maximum_ports);
- _Rate_monotonic_Manager_initialization( api_configuration->maximum_periods );
+ _Rate_monotonic_Manager_initialization( api->maximum_periods );
- _Barrier_Manager_initialization( api_configuration->maximum_barriers );
+ _Barrier_Manager_initialization( api->maximum_barriers );
}
/* end of file */
diff --git a/cpukit/score/src/isr.c b/cpukit/score/src/isr.c
index e6d62a9366..8e1a551472 100644
--- a/cpukit/score/src/isr.c
+++ b/cpukit/score/src/isr.c
@@ -2,7 +2,7 @@
* ISR Handler
*
*
- * COPYRIGHT (c) 1989-1999.
+ * COPYRIGHT (c) 1989-2008.
* On-Line Applications Research Corporation (OAR).
*
* The license and distribution terms for this file may be
@@ -48,7 +48,7 @@ void _ISR_Handler_initialization( void )
#if ( CPU_ALLOCATE_INTERRUPT_STACK == TRUE )
- if ( !_Stack_Is_enough(_Configuration_Table->interrupt_stack_size) )
+ if ( !_Stack_Is_enough(Configuration.interrupt_stack_size) )
_Internal_error_Occurred(
INTERNAL_ERROR_CORE,
TRUE,
@@ -56,12 +56,12 @@ void _ISR_Handler_initialization( void )
);
_CPU_Interrupt_stack_low = _Workspace_Allocate_or_fatal_error(
- _Configuration_Table->interrupt_stack_size
+ Configuration.interrupt_stack_size
);
_CPU_Interrupt_stack_high = _Addresses_Add_offset(
_CPU_Interrupt_stack_low,
- _Configuration_Table->interrupt_stack_size
+ Configuration.interrupt_stack_size
);
#endif
diff --git a/cpukit/score/src/thread.c b/cpukit/score/src/thread.c
index 31e1d31b86..ecc47f49b2 100644
--- a/cpukit/score/src/thread.c
+++ b/cpukit/score/src/thread.c
@@ -2,7 +2,7 @@
* Thread Handler
*
*
- * COPYRIGHT (c) 1989-2007.
+ * COPYRIGHT (c) 1989-2008.
* On-Line Applications Research Corporation (OAR).
*
* The license and distribution terms for this file may be
@@ -59,8 +59,8 @@ void _Thread_Handler_initialization(
* BOTH stacks hooks must be set or both must be NULL.
* Do not allow mixture.
*/
- if ( !( (!_Configuration_Table->stack_allocate_hook)
- == (!_Configuration_Table->stack_free_hook) ) )
+ if ( !( (!Configuration.stack_allocate_hook)
+ == (!Configuration.stack_free_hook) ) )
_Internal_error_Occurred(
INTERNAL_ERROR_CORE,
TRUE,
diff --git a/cpukit/score/src/threadcreateidle.c b/cpukit/score/src/threadcreateidle.c
index 2643d7248c..9ee8810b12 100644
--- a/cpukit/score/src/threadcreateidle.c
+++ b/cpukit/score/src/threadcreateidle.c
@@ -60,7 +60,7 @@ void _Thread_Create_idle( void )
&_Thread_Internal_information,
_Thread_Idle,
NULL, /* allocate the stack */
- _Stack_Ensure_minimum( _Configuration_Table->idle_task_stack_size ),
+ _Stack_Ensure_minimum( Configuration.idle_task_stack_size ),
CPU_IDLE_TASK_IS_FP,
PRIORITY_MAXIMUM,
TRUE, /* preemptable */
@@ -82,7 +82,7 @@ void _Thread_Create_idle( void )
_Thread_Start(
_Thread_Idle,
THREAD_START_NUMERIC,
- _Configuration_Table->idle_task,
+ Configuration.idle_task,
NULL,
0
);
diff --git a/cpukit/score/src/threadstackallocate.c b/cpukit/score/src/threadstackallocate.c
index 86ae78c4cc..35c08ec1df 100644
--- a/cpukit/score/src/threadstackallocate.c
+++ b/cpukit/score/src/threadstackallocate.c
@@ -2,7 +2,7 @@
* Thread Handler
*
*
- * COPYRIGHT (c) 1989-1999.
+ * COPYRIGHT (c) 1989-2008.
* On-Line Applications Research Corporation (OAR).
*
* The license and distribution terms for this file may be
@@ -57,8 +57,8 @@ size_t _Thread_Stack_Allocate(
* routine can call the correct deallocation routine.
*/
- if ( _Configuration_Table->stack_allocate_hook ) {
- stack_addr = (*_Configuration_Table->stack_allocate_hook)( the_stack_size );
+ if ( Configuration.stack_allocate_hook ) {
+ stack_addr = (*Configuration.stack_allocate_hook)( the_stack_size );
} else {
/*
diff --git a/cpukit/score/src/threadstackfree.c b/cpukit/score/src/threadstackfree.c
index ad23a57de2..ba376b8972 100644
--- a/cpukit/score/src/threadstackfree.c
+++ b/cpukit/score/src/threadstackfree.c
@@ -2,7 +2,7 @@
* Thread Handler
*
*
- * COPYRIGHT (c) 1989-1999.
+ * COPYRIGHT (c) 1989-2008.
* On-Line Applications Research Corporation (OAR).
*
* The license and distribution terms for this file may be
@@ -54,8 +54,8 @@ void _Thread_Stack_Free(
* routine properly matches the allocation of the stack.
*/
- if ( _Configuration_Table->stack_free_hook )
- (*_Configuration_Table->stack_free_hook)(
+ if ( Configuration.stack_free_hook )
+ (*Configuration.stack_free_hook)(
the_thread->Start.Initial_stack.area
);
else
diff --git a/cpukit/score/src/wkspace.c b/cpukit/score/src/wkspace.c
index ebb71f3297..fe18d75e59 100644
--- a/cpukit/score/src/wkspace.c
+++ b/cpukit/score/src/wkspace.c
@@ -1,7 +1,7 @@
/*
* Workspace Handler
*
- * COPYRIGHT (c) 1989-2007.
+ * COPYRIGHT (c) 1989-2008.
* On-Line Applications Research Corporation (OAR).
*
* The license and distribution terms for this file may be
@@ -39,7 +39,7 @@ void _Workspace_Handler_initialization(
INTERNAL_ERROR_INVALID_WORKSPACE_ADDRESS
);
- if ( _Configuration_Table->do_zero_of_workspace )
+ if ( Configuration.do_zero_of_workspace )
memset( starting_address, 0, size );
memory_available = _Heap_Initialize(