From e6d4b1d0861d0bd37d7d57db696286de254ad7a2 Mon Sep 17 00:00:00 2001 From: Joel Sherrill Date: Tue, 28 May 1996 13:13:34 +0000 Subject: added initial posix configuration support --- cpukit/libcsupport/src/libio.c | 5 +-- cpukit/libmisc/monitor/mon-config.c | 19 +++++------ cpukit/libmisc/monitor/mon-itask.c | 4 +-- cpukit/posix/include/rtems/posix/config.h | 51 +++++++++++++++++++++++++++++ cpukit/rtems/include/rtems/rtems/config.h | 54 +++++++++++++++++++++++++++++++ cpukit/rtems/include/rtems/rtems/tasks.h | 1 + cpukit/sapi/include/confdefs.h | 23 +++++++------ cpukit/sapi/include/rtems/config.h | 26 +++++++-------- cpukit/sapi/src/rtemsapi.c | 32 ++++++++---------- 9 files changed, 161 insertions(+), 54 deletions(-) create mode 100644 cpukit/posix/include/rtems/posix/config.h create mode 100644 cpukit/rtems/include/rtems/rtems/config.h (limited to 'cpukit') diff --git a/cpukit/libcsupport/src/libio.c b/cpukit/libcsupport/src/libio.c index 202d1f9275..547f7ac377 100644 --- a/cpukit/libcsupport/src/libio.c +++ b/cpukit/libcsupport/src/libio.c @@ -90,8 +90,9 @@ rtems_libio_config( * tweak config to reflect # of semaphores we will need */ - config->maximum_semaphores += 1; /* one for iop table */ - config->maximum_semaphores += max_fds; + /* one for iop table */ + config->RTEMS_api_configuration->maximum_semaphores += 1; + config->RTEMS_api_configuration->maximum_semaphores += max_fds; } /* diff --git a/cpukit/libmisc/monitor/mon-config.c b/cpukit/libmisc/monitor/mon-config.c index f5c9f6f093..d7593dc912 100644 --- a/cpukit/libmisc/monitor/mon-config.c +++ b/cpukit/libmisc/monitor/mon-config.c @@ -29,21 +29,22 @@ rtems_monitor_config_canonical( ) { rtems_configuration_table *c = (rtems_configuration_table *) config_void; + rtems_api_configuration_table *r = c->RTEMS_api_configuration; canonical_config->work_space_start = c->work_space_start; canonical_config->work_space_size = c->work_space_size; - canonical_config->maximum_tasks = c->maximum_tasks; - canonical_config->maximum_timers = c->maximum_timers; - canonical_config->maximum_semaphores = c->maximum_semaphores; - canonical_config->maximum_message_queues = c->maximum_message_queues; - canonical_config->maximum_partitions = c->maximum_partitions; - canonical_config->maximum_regions = c->maximum_regions; - canonical_config->maximum_ports = c->maximum_ports; - canonical_config->maximum_periods = c->maximum_periods; + canonical_config->maximum_tasks = r->maximum_tasks; + canonical_config->maximum_timers = r->maximum_timers; + canonical_config->maximum_semaphores = r->maximum_semaphores; + canonical_config->maximum_message_queues = r->maximum_message_queues; + canonical_config->maximum_partitions = r->maximum_partitions; + canonical_config->maximum_regions = r->maximum_regions; + canonical_config->maximum_ports = r->maximum_ports; + canonical_config->maximum_periods = r->maximum_periods; canonical_config->maximum_extensions = c->maximum_extensions; canonical_config->microseconds_per_tick = c->microseconds_per_tick; canonical_config->ticks_per_timeslice = c->ticks_per_timeslice; - canonical_config->number_of_initialization_tasks = c->number_of_initialization_tasks; + canonical_config->number_of_initialization_tasks = r->number_of_initialization_tasks; } /* diff --git a/cpukit/libmisc/monitor/mon-itask.c b/cpukit/libmisc/monitor/mon-itask.c index 5ce4b55270..8d7b48277e 100644 --- a/cpukit/libmisc/monitor/mon-itask.c +++ b/cpukit/libmisc/monitor/mon-itask.c @@ -42,12 +42,12 @@ rtems_monitor_init_task_next( rtems_initialization_tasks_table *itask; int n = rtems_get_index(*next_id); - if (n >= c->number_of_initialization_tasks) + if (n >= c->RTEMS_api_configuration->number_of_initialization_tasks) goto failed; _Thread_Disable_dispatch(); - itask = c->User_initialization_tasks_table + n; + itask = c->RTEMS_api_configuration->User_initialization_tasks_table + n; /* * dummy up a fake id and name for this item diff --git a/cpukit/posix/include/rtems/posix/config.h b/cpukit/posix/include/rtems/posix/config.h new file mode 100644 index 0000000000..c13253c2dd --- /dev/null +++ b/cpukit/posix/include/rtems/posix/config.h @@ -0,0 +1,51 @@ +/* config.h + * + * This include file contains the table of user defined configuration + * parameters specific for the POSIX API. + * + * COPYRIGHT (c) 1989, 1990, 1991, 1992, 1993, 1994. + * On-Line Applications Research Corporation (OAR). + * All rights assigned to U.S. Government, 1994. + * + * This material may be reproduced by or for the U.S. Government pursuant + * to the copyright license under the clause at DFARS 252.227-7013. This + * notice must appear in all copies of this file and its derivatives. + * + * $Id$ + */ + +#ifndef __RTEMS_POSIX_CONFIGURATION_h +#define __RTEMS_POSIX_CONFIGURATION_h + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * XXX + * + * The following records define the Configuration Table. The + * information contained in this table is required in all + * RTEMS systems, whether single or multiprocessor. This + * table primarily defines the following: + * + * + required number of each object type + */ + +/* XXX fix me */ +typedef int posix_initialization_tasks_table; + +typedef struct { + int maximum_threads; + int maximum_mutexes; + int maximum_condition_variables; + int number_of_initialization_tasks; + posix_initialization_tasks_table *User_initialization_tasks_table; +} posix_api_configuration_table; + +#ifdef __cplusplus +} +#endif + +#endif +/* end of include file */ diff --git a/cpukit/rtems/include/rtems/rtems/config.h b/cpukit/rtems/include/rtems/rtems/config.h new file mode 100644 index 0000000000..b0a0811bfe --- /dev/null +++ b/cpukit/rtems/include/rtems/rtems/config.h @@ -0,0 +1,54 @@ +/* config.h + * + * This include file contains the table of user defined configuration + * parameters specific for the RTEMS API. + * + * COPYRIGHT (c) 1989, 1990, 1991, 1992, 1993, 1994. + * On-Line Applications Research Corporation (OAR). + * All rights assigned to U.S. Government, 1994. + * + * This material may be reproduced by or for the U.S. Government pursuant + * to the copyright license under the clause at DFARS 252.227-7013. This + * notice must appear in all copies of this file and its derivatives. + * + * $Id$ + */ + +#ifndef __RTEMS_RTEMS_CONFIGURATION_h +#define __RTEMS_RTEMS_CONFIGURATION_h + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include + +/* + * The following records define the Configuration Table. The + * information contained in this table is required in all + * RTEMS systems, whether single or multiprocessor. This + * table primarily defines the following: + * + * + required number of each object type + */ + +typedef struct { + unsigned32 maximum_tasks; + unsigned32 maximum_timers; + unsigned32 maximum_semaphores; + unsigned32 maximum_message_queues; + unsigned32 maximum_partitions; + unsigned32 maximum_regions; + unsigned32 maximum_ports; + unsigned32 maximum_periods; + unsigned32 number_of_initialization_tasks; + rtems_initialization_tasks_table *User_initialization_tasks_table; +} rtems_api_configuration_table; + +#ifdef __cplusplus +} +#endif + +#endif +/* end of include file */ diff --git a/cpukit/rtems/include/rtems/rtems/tasks.h b/cpukit/rtems/include/rtems/rtems/tasks.h index b86d85a562..43f65dd5f3 100644 --- a/cpukit/rtems/include/rtems/rtems/tasks.h +++ b/cpukit/rtems/include/rtems/rtems/tasks.h @@ -45,6 +45,7 @@ extern "C" { #include #include #include +#include /* * Constant to be used as the ID of current task diff --git a/cpukit/sapi/include/confdefs.h b/cpukit/sapi/include/confdefs.h index 83f6c3ccd1..8450e43c3c 100644 --- a/cpukit/sapi/include/confdefs.h +++ b/cpukit/sapi/include/confdefs.h @@ -22,7 +22,6 @@ extern "C" { #endif - extern rtems_initialization_tasks_table Initialization_tasks[]; extern rtems_driver_address_table Device_drivers[]; extern rtems_configuration_table Configuration; @@ -341,9 +340,8 @@ rtems_multiprocessing_table Multiprocessing_configuration = { #endif #ifdef CONFIGURE_INIT -rtems_configuration_table Configuration = { - CONFIGURE_EXECUTIVE_RAM_WORK_AREA, - CONFIGURE_EXECUTIVE_RAM_SIZE, + +rtems_api_configuration_table Configuration_RTEMS_API = { CONFIGURE_MAXIMUM_TASKS, CONFIGURE_MAXIMUM_TIMERS, CONFIGURE_MAXIMUM_SEMAPHORES, @@ -352,18 +350,25 @@ rtems_configuration_table Configuration = { CONFIGURE_MAXIMUM_REGIONS, CONFIGURE_MAXIMUM_PORTS, CONFIGURE_MAXIMUM_PERIODS, + sizeof (Initialization_tasks)/ + sizeof(rtems_initialization_tasks_table), /* number of init tasks */ + Initialization_tasks /* init task(s) table */ +}; + +rtems_configuration_table Configuration = { + CONFIGURE_EXECUTIVE_RAM_WORK_AREA, + CONFIGURE_EXECUTIVE_RAM_SIZE, CONFIGURE_MAXIMUM_USER_EXTENSIONS, CONFIGURE_MICROSECONDS_PER_TICK, CONFIGURE_TICKS_PER_TIMESLICE, - sizeof (Initialization_tasks)/ - sizeof(rtems_initialization_tasks_table), /* number of init tasks */ - Initialization_tasks, /* init task(s) table */ + CONFIGURE_MAXIMUM_DEVICES, sizeof (Device_drivers)/ sizeof(rtems_driver_address_table), /* number of device drivers */ - CONFIGURE_MAXIMUM_DEVICES, Device_drivers, /* pointer to driver table */ CONFIGURE_INITIAL_EXTENSIONS, /* pointer to initial extensions */ - CONFIGURE_MULTIPROCESSING_TABLE /* ptr to MP config table */ + CONFIGURE_MULTIPROCESSING_TABLE, /* pointer to MP config table */ + &Configuration_RTEMS_API, /* pointer to RTEMS API config */ + NULL /* pointer to RTEMS API config */ }; #endif diff --git a/cpukit/sapi/include/rtems/config.h b/cpukit/sapi/include/rtems/config.h index 29f6005f58..d43839e6d6 100644 --- a/cpukit/sapi/include/rtems/config.h +++ b/cpukit/sapi/include/rtems/config.h @@ -21,12 +21,18 @@ extern "C" { #endif +#include +#include + +/* XXX should cover these #include +#include +#include +*/ + #include #include #include -#include -#include /* * The following records define the Multiprocessor Configuration @@ -50,32 +56,24 @@ typedef struct { * table primarily defines the following: * * + location and size of the RTEMS Workspace - * + required number of each object type * + microseconds per clock tick * + clock ticks per task timeslice + * + required number of each object type for each API configured */ typedef struct { void *work_space_start; unsigned32 work_space_size; - unsigned32 maximum_tasks; - unsigned32 maximum_timers; - unsigned32 maximum_semaphores; - unsigned32 maximum_message_queues; - unsigned32 maximum_partitions; - unsigned32 maximum_regions; - unsigned32 maximum_ports; - unsigned32 maximum_periods; unsigned32 maximum_extensions; unsigned32 microseconds_per_tick; unsigned32 ticks_per_timeslice; - unsigned32 number_of_initialization_tasks; - rtems_initialization_tasks_table *User_initialization_tasks_table; - unsigned32 number_of_device_drivers; unsigned32 maximum_devices; + unsigned32 number_of_device_drivers; rtems_driver_address_table *Device_driver_table; rtems_extensions_table *User_extension_table; rtems_multiprocessing_table *User_multiprocessing_table; + rtems_api_configuration_table *RTEMS_api_configuration; + posix_api_configuration_table *Posix_api_configuration; } rtems_configuration_table; /* diff --git a/cpukit/sapi/src/rtemsapi.c b/cpukit/sapi/src/rtemsapi.c index b6ecb6c37c..d7ffb3e2fb 100644 --- a/cpukit/sapi/src/rtemsapi.c +++ b/cpukit/sapi/src/rtemsapi.c @@ -45,6 +45,10 @@ void _RTEMS_API_Initialize( rtems_configuration_table *configuration_table ) { + rtems_api_configuration_table *api_configuration; + + api_configuration = configuration_table->RTEMS_api_configuration; + _Attributes_Handler_initialization(); _Interrupt_Manager_initialization(); @@ -52,38 +56,30 @@ void _RTEMS_API_Initialize( _Multiprocessing_Manager_initialization(); _RTEMS_tasks_Manager_initialization( - configuration_table->maximum_tasks, - configuration_table->number_of_initialization_tasks, - configuration_table->User_initialization_tasks_table + api_configuration->maximum_tasks, + api_configuration->number_of_initialization_tasks, + api_configuration->User_initialization_tasks_table ); - _Timer_Manager_initialization( configuration_table->maximum_timers ); + _Timer_Manager_initialization( api_configuration->maximum_timers ); _Signal_Manager_initialization(); _Event_Manager_initialization(); _Message_queue_Manager_initialization( - configuration_table->maximum_message_queues + api_configuration->maximum_message_queues ); - _Semaphore_Manager_initialization( - configuration_table->maximum_semaphores - ); + _Semaphore_Manager_initialization( api_configuration->maximum_semaphores ); - _Partition_Manager_initialization( - configuration_table->maximum_partitions - ); + _Partition_Manager_initialization( api_configuration->maximum_partitions ); - _Region_Manager_initialization( configuration_table->maximum_regions ); + _Region_Manager_initialization( api_configuration->maximum_regions ); - _Dual_ported_memory_Manager_initialization( - configuration_table->maximum_ports - ); + _Dual_ported_memory_Manager_initialization( api_configuration->maximum_ports); - _Rate_monotonic_Manager_initialization( - configuration_table->maximum_periods - ); + _Rate_monotonic_Manager_initialization( api_configuration->maximum_periods ); } /* end of file */ -- cgit v1.2.3