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 --- c/src/exec/libcsupport/src/libio.c | 5 +- c/src/exec/posix/headers/config.h | 51 ++++++++++++++++++++ c/src/exec/posix/include/rtems/posix/config.h | 51 ++++++++++++++++++++ c/src/exec/rtems/headers/config.h | 54 ++++++++++++++++++++++ c/src/exec/rtems/headers/tasks.h | 1 + c/src/exec/rtems/include/rtems/rtems/config.h | 54 ++++++++++++++++++++++ c/src/exec/rtems/include/rtems/rtems/tasks.h | 1 + c/src/exec/sapi/headers/confdefs.h | 23 +++++---- c/src/exec/sapi/headers/config.h | 26 +++++------ c/src/exec/sapi/include/confdefs.h | 23 +++++---- c/src/exec/sapi/include/rtems/config.h | 26 +++++------ c/src/exec/sapi/src/rtemsapi.c | 32 ++++++------- .../lib/libbsp/hppa1.1/simhppa/startup/bspstart.c | 2 +- c/src/lib/libbsp/i386/force386/startup/bspstart.c | 2 +- c/src/lib/libbsp/i386/go32/startup/bspstart.c | 2 +- c/src/lib/libbsp/i960/cvme961/startup/bspstart.c | 2 +- c/src/lib/libbsp/m68k/dmv152/startup/bspstart.c | 2 +- c/src/lib/libbsp/m68k/efi332/startup/bspstart.c | 2 +- c/src/lib/libbsp/m68k/efi68k/startup/bspstart.c | 2 +- c/src/lib/libbsp/m68k/gen68302/startup/bspstart.c | 2 +- c/src/lib/libbsp/m68k/gen68360/startup/bspstart.c | 2 +- c/src/lib/libbsp/m68k/idp/startup/bspstart.c | 2 +- c/src/lib/libbsp/m68k/mvme136/startup/bspstart.c | 2 +- c/src/lib/libbsp/m68k/mvme147/startup/bspstart.c | 2 +- c/src/lib/libbsp/m68k/mvme162/startup/bspstart.c | 2 +- c/src/lib/libbsp/no_cpu/no_bsp/startup/bspstart.c | 2 +- .../lib/libbsp/powerpc/papyrus/startup/bspstart.c | 2 +- c/src/lib/libbsp/unix/posix/startup/bspstart.c | 2 +- c/src/lib/libc/libio.c | 5 +- c/src/lib/libmisc/monitor/mon-config.c | 19 ++++---- c/src/lib/libmisc/monitor/mon-itask.c | 4 +- c/src/libmisc/monitor/mon-config.c | 19 ++++---- c/src/libmisc/monitor/mon-itask.c | 4 +- c/src/tests/support/include/tmacros.h | 3 +- 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 ++++++------- testsuites/support/include/tmacros.h | 3 +- 44 files changed, 489 insertions(+), 162 deletions(-) create mode 100644 c/src/exec/posix/headers/config.h create mode 100644 c/src/exec/posix/include/rtems/posix/config.h create mode 100644 c/src/exec/rtems/headers/config.h create mode 100644 c/src/exec/rtems/include/rtems/rtems/config.h create mode 100644 cpukit/posix/include/rtems/posix/config.h create mode 100644 cpukit/rtems/include/rtems/rtems/config.h diff --git a/c/src/exec/libcsupport/src/libio.c b/c/src/exec/libcsupport/src/libio.c index 202d1f9275..547f7ac377 100644 --- a/c/src/exec/libcsupport/src/libio.c +++ b/c/src/exec/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/c/src/exec/posix/headers/config.h b/c/src/exec/posix/headers/config.h new file mode 100644 index 0000000000..c13253c2dd --- /dev/null +++ b/c/src/exec/posix/headers/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/c/src/exec/posix/include/rtems/posix/config.h b/c/src/exec/posix/include/rtems/posix/config.h new file mode 100644 index 0000000000..c13253c2dd --- /dev/null +++ b/c/src/exec/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/c/src/exec/rtems/headers/config.h b/c/src/exec/rtems/headers/config.h new file mode 100644 index 0000000000..b0a0811bfe --- /dev/null +++ b/c/src/exec/rtems/headers/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/c/src/exec/rtems/headers/tasks.h b/c/src/exec/rtems/headers/tasks.h index b86d85a562..43f65dd5f3 100644 --- a/c/src/exec/rtems/headers/tasks.h +++ b/c/src/exec/rtems/headers/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/c/src/exec/rtems/include/rtems/rtems/config.h b/c/src/exec/rtems/include/rtems/rtems/config.h new file mode 100644 index 0000000000..b0a0811bfe --- /dev/null +++ b/c/src/exec/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/c/src/exec/rtems/include/rtems/rtems/tasks.h b/c/src/exec/rtems/include/rtems/rtems/tasks.h index b86d85a562..43f65dd5f3 100644 --- a/c/src/exec/rtems/include/rtems/rtems/tasks.h +++ b/c/src/exec/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/c/src/exec/sapi/headers/confdefs.h b/c/src/exec/sapi/headers/confdefs.h index 83f6c3ccd1..8450e43c3c 100644 --- a/c/src/exec/sapi/headers/confdefs.h +++ b/c/src/exec/sapi/headers/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/c/src/exec/sapi/headers/config.h b/c/src/exec/sapi/headers/config.h index 29f6005f58..d43839e6d6 100644 --- a/c/src/exec/sapi/headers/config.h +++ b/c/src/exec/sapi/headers/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/c/src/exec/sapi/include/confdefs.h b/c/src/exec/sapi/include/confdefs.h index 83f6c3ccd1..8450e43c3c 100644 --- a/c/src/exec/sapi/include/confdefs.h +++ b/c/src/exec/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/c/src/exec/sapi/include/rtems/config.h b/c/src/exec/sapi/include/rtems/config.h index 29f6005f58..d43839e6d6 100644 --- a/c/src/exec/sapi/include/rtems/config.h +++ b/c/src/exec/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/c/src/exec/sapi/src/rtemsapi.c b/c/src/exec/sapi/src/rtemsapi.c index b6ecb6c37c..d7ffb3e2fb 100644 --- a/c/src/exec/sapi/src/rtemsapi.c +++ b/c/src/exec/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 */ diff --git a/c/src/lib/libbsp/hppa1.1/simhppa/startup/bspstart.c b/c/src/lib/libbsp/hppa1.1/simhppa/startup/bspstart.c index e522a852f7..76b73c7222 100644 --- a/c/src/lib/libbsp/hppa1.1/simhppa/startup/bspstart.c +++ b/c/src/lib/libbsp/hppa1.1/simhppa/startup/bspstart.c @@ -377,7 +377,7 @@ bsp_start(void) * Add 1 region for RTEMS Malloc */ - BSP_Configuration.maximum_regions++; + BSP_Configuration.RTEMS_api_configuration->maximum_regions++; #ifdef RTEMS_NEWLIB /* diff --git a/c/src/lib/libbsp/i386/force386/startup/bspstart.c b/c/src/lib/libbsp/i386/force386/startup/bspstart.c index d2349f9fc7..04a9bae415 100644 --- a/c/src/lib/libbsp/i386/force386/startup/bspstart.c +++ b/c/src/lib/libbsp/i386/force386/startup/bspstart.c @@ -194,7 +194,7 @@ int main( * Add 1 region for Malloc in libc_low */ - BSP_Configuration.maximum_regions++; + BSP_Configuration.RTEMS_api_configuration->maximum_regions++; /* * Add 1 extension for newlib libc diff --git a/c/src/lib/libbsp/i386/go32/startup/bspstart.c b/c/src/lib/libbsp/i386/go32/startup/bspstart.c index c4575f81d4..9f20f4a4e5 100644 --- a/c/src/lib/libbsp/i386/go32/startup/bspstart.c +++ b/c/src/lib/libbsp/i386/go32/startup/bspstart.c @@ -194,7 +194,7 @@ int main( * Add 1 region for Malloc in libc_low */ - BSP_Configuration.maximum_regions++; + BSP_Configuration.RTEMS_api_configuration->maximum_regions++; /* * Add 1 extension for newlib libc diff --git a/c/src/lib/libbsp/i960/cvme961/startup/bspstart.c b/c/src/lib/libbsp/i960/cvme961/startup/bspstart.c index 7316f46f54..60fd38d969 100644 --- a/c/src/lib/libbsp/i960/cvme961/startup/bspstart.c +++ b/c/src/lib/libbsp/i960/cvme961/startup/bspstart.c @@ -208,7 +208,7 @@ int main( * Add 1 region for the RTEMS Malloc */ - BSP_Configuration.maximum_regions++; + BSP_Configuration.RTEMS_api_configuration->maximum_regions++; /* * Add 1 extension for newlib libc diff --git a/c/src/lib/libbsp/m68k/dmv152/startup/bspstart.c b/c/src/lib/libbsp/m68k/dmv152/startup/bspstart.c index 0cc4ae8e60..f004407312 100644 --- a/c/src/lib/libbsp/m68k/dmv152/startup/bspstart.c +++ b/c/src/lib/libbsp/m68k/dmv152/startup/bspstart.c @@ -216,7 +216,7 @@ int main( * Add 1 region for Malloc in libc_low */ - BSP_Configuration.maximum_regions++; + BSP_Configuration.RTEMS_api_configuration->maximum_regions++; /* * Add 1 extension for newlib libc diff --git a/c/src/lib/libbsp/m68k/efi332/startup/bspstart.c b/c/src/lib/libbsp/m68k/efi332/startup/bspstart.c index 82dbb94638..f5eb9fbcbd 100644 --- a/c/src/lib/libbsp/m68k/efi332/startup/bspstart.c +++ b/c/src/lib/libbsp/m68k/efi332/startup/bspstart.c @@ -189,7 +189,7 @@ int main( * Add 1 region for Malloc in libc_low */ - BSP_Configuration.maximum_regions++; + BSP_Configuration.RTEMS_api_configuration->maximum_regions++; /* * Add 1 extension for newlib libc diff --git a/c/src/lib/libbsp/m68k/efi68k/startup/bspstart.c b/c/src/lib/libbsp/m68k/efi68k/startup/bspstart.c index 6e93953bc6..b3e33c16d0 100644 --- a/c/src/lib/libbsp/m68k/efi68k/startup/bspstart.c +++ b/c/src/lib/libbsp/m68k/efi68k/startup/bspstart.c @@ -199,7 +199,7 @@ int main( * Add 1 region for Malloc in libc_low */ - BSP_Configuration.maximum_regions++; + BSP_Configuration.RTEMS_api_configuration->maximum_regions++; /* * Add 1 extension for newlib libc diff --git a/c/src/lib/libbsp/m68k/gen68302/startup/bspstart.c b/c/src/lib/libbsp/m68k/gen68302/startup/bspstart.c index 307dc04d1e..f8cb057317 100644 --- a/c/src/lib/libbsp/m68k/gen68302/startup/bspstart.c +++ b/c/src/lib/libbsp/m68k/gen68302/startup/bspstart.c @@ -180,7 +180,7 @@ int main( * Add 1 region for the RTEMS Malloc */ - BSP_Configuration.maximum_regions++; + BSP_Configuration.RTEMS_api_configuration->maximum_regions++; /* * Add 1 extension for newlib libc diff --git a/c/src/lib/libbsp/m68k/gen68360/startup/bspstart.c b/c/src/lib/libbsp/m68k/gen68360/startup/bspstart.c index bbf1185f06..d35ca4d5cf 100644 --- a/c/src/lib/libbsp/m68k/gen68360/startup/bspstart.c +++ b/c/src/lib/libbsp/m68k/gen68360/startup/bspstart.c @@ -177,7 +177,7 @@ int main( * Add 1 region for the RTEMS Malloc */ - BSP_Configuration.maximum_regions++; + BSP_Configuration.RTEMS_api_configuration->maximum_regions++; /* * Add 1 extension for newlib libc diff --git a/c/src/lib/libbsp/m68k/idp/startup/bspstart.c b/c/src/lib/libbsp/m68k/idp/startup/bspstart.c index 2c71a1d8e9..6fff075174 100644 --- a/c/src/lib/libbsp/m68k/idp/startup/bspstart.c +++ b/c/src/lib/libbsp/m68k/idp/startup/bspstart.c @@ -223,7 +223,7 @@ int main( * Add 1 region for the RTEMS Malloc */ - BSP_Configuration.maximum_regions++; + BSP_Configuration.RTEMS_api_configuration->maximum_regions++; /* * Add 1 extension for newlib libc diff --git a/c/src/lib/libbsp/m68k/mvme136/startup/bspstart.c b/c/src/lib/libbsp/m68k/mvme136/startup/bspstart.c index 40f9c171cb..950630e9ee 100644 --- a/c/src/lib/libbsp/m68k/mvme136/startup/bspstart.c +++ b/c/src/lib/libbsp/m68k/mvme136/startup/bspstart.c @@ -206,7 +206,7 @@ int main( * Add 1 region for the RTEMS Malloc */ - BSP_Configuration.maximum_regions++; + BSP_Configuration.RTEMS_api_configuration->maximum_regions++; /* * Add 1 extension for newlib libc diff --git a/c/src/lib/libbsp/m68k/mvme147/startup/bspstart.c b/c/src/lib/libbsp/m68k/mvme147/startup/bspstart.c index 826d4075f8..ce0ed9b354 100644 --- a/c/src/lib/libbsp/m68k/mvme147/startup/bspstart.c +++ b/c/src/lib/libbsp/m68k/mvme147/startup/bspstart.c @@ -212,7 +212,7 @@ int main( * Add 1 region for the RTEMS Malloc */ - BSP_Configuration.maximum_regions++; + BSP_Configuration.RTEMS_api_configuration->maximum_regions++; /* * Add 1 extension for newlib libc diff --git a/c/src/lib/libbsp/m68k/mvme162/startup/bspstart.c b/c/src/lib/libbsp/m68k/mvme162/startup/bspstart.c index bc26a8be93..7cbfd6f83b 100644 --- a/c/src/lib/libbsp/m68k/mvme162/startup/bspstart.c +++ b/c/src/lib/libbsp/m68k/mvme162/startup/bspstart.c @@ -220,7 +220,7 @@ int main( * Add 1 region for the RTEMS Malloc */ - BSP_Configuration.maximum_regions++; + BSP_Configuration.RTEMS_api_configuration->maximum_regions++; /* * Add 1 extension for newlib libc diff --git a/c/src/lib/libbsp/no_cpu/no_bsp/startup/bspstart.c b/c/src/lib/libbsp/no_cpu/no_bsp/startup/bspstart.c index 8ab251b791..e43bc7fb17 100644 --- a/c/src/lib/libbsp/no_cpu/no_bsp/startup/bspstart.c +++ b/c/src/lib/libbsp/no_cpu/no_bsp/startup/bspstart.c @@ -177,7 +177,7 @@ int bsp_start( * Add 1 region for the RTEMS Malloc */ - BSP_Configuration.maximum_regions++; + BSP_Configuration.RTEMS_api_configuration->maximum_regions++; /* * Add 1 extension for newlib libc diff --git a/c/src/lib/libbsp/powerpc/papyrus/startup/bspstart.c b/c/src/lib/libbsp/powerpc/papyrus/startup/bspstart.c index 9358e77ee8..e8faaa2904 100644 --- a/c/src/lib/libbsp/powerpc/papyrus/startup/bspstart.c +++ b/c/src/lib/libbsp/powerpc/papyrus/startup/bspstart.c @@ -195,7 +195,7 @@ int bsp_start( * Add 1 region for the RTEMS Malloc */ - BSP_Configuration.maximum_regions++; + BSP_Configuration.RTEMS_api_configuration->maximum_regions++; /* * Add 1 extension for newlib libc diff --git a/c/src/lib/libbsp/unix/posix/startup/bspstart.c b/c/src/lib/libbsp/unix/posix/startup/bspstart.c index 8f8344523a..6135c202fe 100644 --- a/c/src/lib/libbsp/unix/posix/startup/bspstart.c +++ b/c/src/lib/libbsp/unix/posix/startup/bspstart.c @@ -323,7 +323,7 @@ bsp_start(void) * Add 1 region for RTEMS Malloc */ - BSP_Configuration.maximum_regions++; + BSP_Configuration.RTEMS_api_configuration->maximum_regions++; #ifdef RTEMS_NEWLIB /* diff --git a/c/src/lib/libc/libio.c b/c/src/lib/libc/libio.c index 202d1f9275..547f7ac377 100644 --- a/c/src/lib/libc/libio.c +++ b/c/src/lib/libc/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/c/src/lib/libmisc/monitor/mon-config.c b/c/src/lib/libmisc/monitor/mon-config.c index f5c9f6f093..d7593dc912 100644 --- a/c/src/lib/libmisc/monitor/mon-config.c +++ b/c/src/lib/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/c/src/lib/libmisc/monitor/mon-itask.c b/c/src/lib/libmisc/monitor/mon-itask.c index 5ce4b55270..8d7b48277e 100644 --- a/c/src/lib/libmisc/monitor/mon-itask.c +++ b/c/src/lib/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/c/src/libmisc/monitor/mon-config.c b/c/src/libmisc/monitor/mon-config.c index f5c9f6f093..d7593dc912 100644 --- a/c/src/libmisc/monitor/mon-config.c +++ b/c/src/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/c/src/libmisc/monitor/mon-itask.c b/c/src/libmisc/monitor/mon-itask.c index 5ce4b55270..8d7b48277e 100644 --- a/c/src/libmisc/monitor/mon-itask.c +++ b/c/src/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/c/src/tests/support/include/tmacros.h b/c/src/tests/support/include/tmacros.h index f5c5e8bfbf..203261d6f8 100644 --- a/c/src/tests/support/include/tmacros.h +++ b/c/src/tests/support/include/tmacros.h @@ -109,7 +109,8 @@ extern "C" { (TB)->ticks = TK; } #define task_number( tid ) \ - ( rtems_get_index( tid ) - BSP_Configuration.number_of_initialization_tasks ) + ( rtems_get_index( tid ) - \ + BSP_Configuration.RTEMS_api_configuration->number_of_initialization_tasks ) static inline rtems_unsigned32 get_ticks_per_second( void ) { 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 */ diff --git a/testsuites/support/include/tmacros.h b/testsuites/support/include/tmacros.h index f5c5e8bfbf..203261d6f8 100644 --- a/testsuites/support/include/tmacros.h +++ b/testsuites/support/include/tmacros.h @@ -109,7 +109,8 @@ extern "C" { (TB)->ticks = TK; } #define task_number( tid ) \ - ( rtems_get_index( tid ) - BSP_Configuration.number_of_initialization_tasks ) + ( rtems_get_index( tid ) - \ + BSP_Configuration.RTEMS_api_configuration->number_of_initialization_tasks ) static inline rtems_unsigned32 get_ticks_per_second( void ) { -- cgit v1.2.3