summaryrefslogtreecommitdiffstats
path: root/c/src/exec/sapi
diff options
context:
space:
mode:
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();