diff options
Diffstat (limited to 'c/src/exec/sapi')
-rw-r--r-- | c/src/exec/sapi/ChangeLog | 21 | ||||
-rw-r--r-- | c/src/exec/sapi/include/confdefs.h | 3 | ||||
-rw-r--r-- | c/src/exec/sapi/src/exinit.c | 10 | ||||
-rw-r--r-- | c/src/exec/sapi/src/extension.c | 12 | ||||
-rw-r--r-- | c/src/exec/sapi/src/itronapi.c | 3 | ||||
-rw-r--r-- | c/src/exec/sapi/src/posixapi.c | 4 | ||||
-rw-r--r-- | c/src/exec/sapi/src/rtemsapi.c | 4 |
7 files changed, 47 insertions, 10 deletions
diff --git a/c/src/exec/sapi/ChangeLog b/c/src/exec/sapi/ChangeLog index c77a725239..615ff4d32c 100644 --- a/c/src/exec/sapi/ChangeLog +++ b/c/src/exec/sapi/ChangeLog @@ -1,3 +1,24 @@ +2002-07-01 Joel Sherrill <joel@OARcorp.com> + + * Mega patch merge to change the format of the object IDs to + loosen the dependency between the SCORE and the various APIs. + There was considerable work to simplify the object name management + and it appears that the name_table field is no longer needed. + This patch also includes the addition of the internal mutex + which is currently only used to protect some types of allocation + and deallocation. This significantly can reduce context + switch latency under certain circumstances. In particular, + some heap/region operations were O(n) and had dispatching + disabled. This should help enormously. With this merge, + the patch is not as clean as it should be. In particular, + the documentation has not been modified to reflect the new object + ID layout, the IDs in the test screens are not updated, and + _Objects_Get_information needs to be a real routine not inlined. + As part of this patch a lot of MP code for thread/proxy blocking + was made conditional and cleaned up. + * include/confdefs.h, src/exinit.c, src/extension.c, src/itronapi.c, + src/posixapi.c, src/rtemsapi.c: Modified as part of above. + 2001-05-09 Joel Sherrill <joel@OARcorp.com> * src/exinit.c: Slightly rework initialization so there diff --git a/c/src/exec/sapi/include/confdefs.h b/c/src/exec/sapi/include/confdefs.h index 52d23e8e6d..cb63e51e23 100644 --- a/c/src/exec/sapi/include/confdefs.h +++ b/c/src/exec/sapi/include/confdefs.h @@ -22,7 +22,8 @@ * the above. This procedure has evolved from just enough to * support the RTEMS Test Suites into something that can be * used remarkably reliably by most applications. - * COPYRIGHT (c) 1989-1999. + * + * COPYRIGHT (c) 1989-2002. * On-Line Applications Research Corporation (OAR). * * The license and distribution terms for this file may be diff --git a/c/src/exec/sapi/src/exinit.c b/c/src/exec/sapi/src/exinit.c index af921c0510..2bc61afb09 100644 --- a/c/src/exec/sapi/src/exinit.c +++ b/c/src/exec/sapi/src/exinit.c @@ -29,9 +29,7 @@ #include <rtems/score/sysstate.h> #include <rtems/score/apiext.h> -#if 0 #include <rtems/score/apimutex.h> -#endif #include <rtems/score/copyrt.h> #include <rtems/score/heap.h> #include <rtems/score/interr.h> @@ -58,6 +56,7 @@ #include <rtems/itron/itronapi.h> #endif +Objects_Information *_Internal_Objects[ OBJECTS_INTERNAL_CLASSES_LAST + 1 ]; /*PAGE * @@ -125,7 +124,6 @@ rtems_interrupt_level rtems_initialize_executive_early( multiprocessing_table = NULL; _System_state_Handler_initialization( FALSE ); - #endif /* @@ -182,6 +180,8 @@ rtems_interrupt_level rtems_initialize_executive_early( multiprocessing_table->maximum_global_objects ); + _Objects_Information_table[OBJECTS_INTERNAL_API] = _Internal_Objects; + _Priority_Handler_initialization(); _Watchdog_Handler_initialization(); @@ -203,6 +203,8 @@ rtems_interrupt_level rtems_initialize_executive_early( /* MANAGERS */ + _RTEMS_API_Initialize( configuration_table ); + _Extension_Manager_initialization( configuration_table->maximum_extensions ); _IO_Manager_initialization( @@ -212,8 +214,6 @@ rtems_interrupt_level rtems_initialize_executive_early( configuration_table->maximum_devices ); - _RTEMS_API_Initialize( configuration_table ); - #ifdef RTEMS_POSIX_API _POSIX_API_Initialize( configuration_table ); #endif diff --git a/c/src/exec/sapi/src/extension.c b/c/src/exec/sapi/src/extension.c index ce5b379e1e..d0bac7a4b4 100644 --- a/c/src/exec/sapi/src/extension.c +++ b/c/src/exec/sapi/src/extension.c @@ -36,12 +36,16 @@ void _Extension_Manager_initialization( { _Objects_Initialize_information( &_Extension_Information, + OBJECTS_CLASSIC_API, /* object API */ OBJECTS_RTEMS_EXTENSIONS, - FALSE, maximum_extensions, sizeof( Extension_Control ), - FALSE, - RTEMS_MAXIMUM_NAME_LENGTH, - FALSE + FALSE, /* TRUE if the name is a string */ + RTEMS_MAXIMUM_NAME_LENGTH /* maximum length of an object name */ +#if defined(RTEMS_MULTIPROCESSING) + , + FALSE, /* TRUE if this is a global object class */ + NULL /* Proxy extraction support callout */ +#endif ); } diff --git a/c/src/exec/sapi/src/itronapi.c b/c/src/exec/sapi/src/itronapi.c index 98475c6fc3..f2d45e08e9 100644 --- a/c/src/exec/sapi/src/itronapi.c +++ b/c/src/exec/sapi/src/itronapi.c @@ -60,6 +60,7 @@ itron_api_configuration_table _ITRON_Default_configuration = { NULL /* User_initialization_tasks_table */ }; +Objects_Information *_ITRON_Objects[ OBJECTS_ITRON_CLASSES_LAST + 1 ]; void _ITRON_API_Initialize( rtems_configuration_table *configuration_table @@ -75,6 +76,8 @@ void _ITRON_API_Initialize( if ( !api_configuration ) api_configuration = &_ITRON_Default_configuration; + _Objects_Information_table[OBJECTS_ITRON_API] = _ITRON_Objects; + _ITRON_Task_Manager_initialization( api_configuration->maximum_tasks, api_configuration->number_of_initialization_tasks, diff --git a/c/src/exec/sapi/src/posixapi.c b/c/src/exec/sapi/src/posixapi.c index 18de12faf8..1776dc23f4 100644 --- a/c/src/exec/sapi/src/posixapi.c +++ b/c/src/exec/sapi/src/posixapi.c @@ -61,6 +61,8 @@ posix_api_configuration_table _POSIX_Default_configuration = { NULL /* User_initialization_threads_table */ }; +Objects_Information *_POSIX_Objects[ OBJECTS_POSIX_CLASSES_LAST + 1 ]; + void _POSIX_API_Initialize( rtems_configuration_table *configuration_table @@ -76,6 +78,8 @@ void _POSIX_API_Initialize( if ( !api_configuration ) api_configuration = &_POSIX_Default_configuration; + _Objects_Information_table[OBJECTS_POSIX_API] = _POSIX_Objects; + _POSIX_signals_Manager_Initialization( api_configuration->maximum_queued_signals ); diff --git a/c/src/exec/sapi/src/rtemsapi.c b/c/src/exec/sapi/src/rtemsapi.c index 58953117c3..9530112945 100644 --- a/c/src/exec/sapi/src/rtemsapi.c +++ b/c/src/exec/sapi/src/rtemsapi.c @@ -40,6 +40,8 @@ #include <rtems/rtems/signal.h> #include <rtems/rtems/timer.h> +Objects_Information *_RTEMS_Objects[ OBJECTS_RTEMS_CLASSES_LAST + 1 ]; + /*PAGE * * _RTEMS_API_Initialize @@ -55,6 +57,8 @@ void _RTEMS_API_Initialize( api_configuration = configuration_table->RTEMS_api_configuration; + _Objects_Information_table[OBJECTS_CLASSIC_API] = _RTEMS_Objects; + _Attributes_Handler_initialization(); _Interrupt_Manager_initialization(); |