summaryrefslogtreecommitdiffstats
path: root/c/src/exec/sapi
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>2002-07-01 22:31:29 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>2002-07-01 22:31:29 +0000
commit0577ec1d78078f95641d0a259012ab00b381e281 (patch)
treee483504fe063166f8411cb973d71fa144c72d671 /c/src/exec/sapi
parent2002-07-01 Joel Sherrill <joel@OARcorp.com> (diff)
downloadrtems-0577ec1d78078f95641d0a259012ab00b381e281.tar.bz2
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.
Diffstat (limited to 'c/src/exec/sapi')
-rw-r--r--c/src/exec/sapi/ChangeLog21
-rw-r--r--c/src/exec/sapi/include/confdefs.h3
-rw-r--r--c/src/exec/sapi/src/exinit.c10
-rw-r--r--c/src/exec/sapi/src/extension.c12
-rw-r--r--c/src/exec/sapi/src/itronapi.c3
-rw-r--r--c/src/exec/sapi/src/posixapi.c4
-rw-r--r--c/src/exec/sapi/src/rtemsapi.c4
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();