summaryrefslogtreecommitdiffstats
path: root/c/src/exec/sapi/headers
diff options
context:
space:
mode:
Diffstat (limited to 'c/src/exec/sapi/headers')
-rw-r--r--c/src/exec/sapi/headers/config.h265
-rw-r--r--c/src/exec/sapi/headers/directives.h6
-rw-r--r--c/src/exec/sapi/headers/extension.h29
-rw-r--r--c/src/exec/sapi/headers/init.h12
-rw-r--r--c/src/exec/sapi/headers/io.h56
-rw-r--r--c/src/exec/sapi/headers/sptables.h22
6 files changed, 125 insertions, 265 deletions
diff --git a/c/src/exec/sapi/headers/config.h b/c/src/exec/sapi/headers/config.h
index 766ea4a4a8..31e8093387 100644
--- a/c/src/exec/sapi/headers/config.h
+++ b/c/src/exec/sapi/headers/config.h
@@ -21,164 +21,12 @@
extern "C" {
#endif
-#include <rtems/types.h>
-#include <rtems/object.h>
-#include <rtems/thread.h>
-
-/*
- * The following records define the Initialization Tasks Table.
- * Each entry contains the information required by RTEMS to
- * create and start a user task automatically at executive
- * initialization time.
- */
-
-typedef struct {
- rtems_name name; /* task name */
- unsigned32 stack_size; /* task stack size */
- rtems_task_priority initial_priority; /* task priority */
- rtems_attribute attribute_set; /* task attributes */
- rtems_task_entry entry_point; /* task entry point */
- rtems_mode mode_set; /* task initial mode */
- unsigned32 argument; /* task argument */
-} rtems_initialization_tasks_table;
-
-/*
- *
- * The following defines the types for:
- *
- * + major and minor numbers
- * + the return type of a device driver entry
- * + a pointer to a device driver entry
- * + an entry in the the Device Driver Address Table. Each entry in this
- * table corresponds to an application provided device driver and
- * defines the entry points for that device driver.
- */
-
-typedef unsigned32 rtems_device_major_number;
-typedef unsigned32 rtems_device_minor_number;
-
-typedef rtems_status_code rtems_device_driver;
-
-typedef rtems_device_driver ( *rtems_device_driver_entry )(
- rtems_device_major_number,
- rtems_device_minor_number,
- void *
- );
-
-typedef struct {
- rtems_device_driver_entry initialization; /* initialization procedure */
- rtems_device_driver_entry open; /* open request procedure */
- rtems_device_driver_entry close; /* close request procedure */
- rtems_device_driver_entry read; /* read request procedure */
- rtems_device_driver_entry write; /* write request procedure */
- rtems_device_driver_entry control; /* special functions procedure */
-} rtems_driver_address_table;
-
-/*
- * The following records defines the User Extension Table.
- * This table defines the application dependent routines which
- * are invoked at critical points in the life of each task and
- * the system as a whole.
- */
-
-typedef void rtems_extension;
-
-typedef rtems_extension ( *rtems_task_create_extension )(
- rtems_tcb *,
- rtems_tcb *
- );
-
-typedef rtems_extension ( *rtems_task_delete_extension )(
- rtems_tcb *,
- rtems_tcb *
- );
-
-typedef rtems_extension ( *rtems_task_start_extension )(
- rtems_tcb *,
- rtems_tcb *
- );
-
-typedef rtems_extension ( *rtems_task_restart_extension )(
- rtems_tcb *,
- rtems_tcb *
- );
-
-typedef rtems_extension ( *rtems_task_switch_extension )(
- rtems_tcb *,
- rtems_tcb *
- );
-
-typedef rtems_extension ( *rtems_task_begin_extension )(
- rtems_tcb *
- );
-
-typedef rtems_extension ( *rtems_task_exitted_extension )(
- rtems_tcb *
- );
-
-typedef rtems_extension ( *rtems_fatal_extension )(
- unsigned32
- );
-
-typedef struct {
- rtems_task_create_extension rtems_task_create;
- rtems_task_start_extension rtems_task_start;
- rtems_task_restart_extension rtems_task_restart;
- rtems_task_delete_extension rtems_task_delete;
- rtems_task_switch_extension task_switch;
- rtems_task_begin_extension task_begin;
- rtems_task_exitted_extension task_exitted;
- rtems_fatal_extension fatal;
-} rtems_extensions_table;
-
-/*
- * The following records define the Multiprocessor Communications
- * Interface (MPCI) Table. This table defines the user-provided
- * MPCI which is a required part of a multiprocessor RTEMS system.
- *
- * For non-blocking local operations that become remote operations,
- * we need a timeout. This is a per-driver timeout: default_timeout
- */
-
-/* XXX FORWARD REFERENCES */
-
-typedef struct Configuration_Table rtems_configuration_table;
-typedef struct Configuration_Table_MP rtems_multiprocessing_table;
-
-typedef void rtems_mpci_entry;
-
-typedef rtems_mpci_entry ( *rtems_mpci_initialization_entry )(
- rtems_configuration_table *,
- rtems_cpu_table *,
- rtems_multiprocessing_table *
- );
-
-typedef rtems_mpci_entry ( *rtems_mpci_get_packet_entry )(
- rtems_packet_prefix **
- );
-
-typedef rtems_mpci_entry ( *rtems_mpci_return_packet_entry )(
- rtems_packet_prefix *
- );
-
-typedef rtems_mpci_entry ( *rtems_mpci_send_entry )(
- unsigned32,
- rtems_packet_prefix *
- );
-
-typedef rtems_mpci_entry ( *rtems_mpci_receive_entry )(
- rtems_packet_prefix **
- );
-
-typedef struct {
- unsigned32 default_timeout; /* in ticks */
- unsigned32 maximum_packet_size;
- rtems_mpci_initialization_entry initialization;
- rtems_mpci_get_packet_entry get_packet;
- rtems_mpci_return_packet_entry return_packet;
- rtems_mpci_send_entry send_packet;
- rtems_mpci_receive_entry receive_packet;
-} rtems_mpci_table;
+#include <rtems/rtems/status.h>
+#include <rtems/extension.h>
+#include <rtems/io.h>
+#include <rtems/core/mpci.h>
+#include <rtems/rtems/types.h>
+#include <rtems/rtems/tasks.h>
/*
* The following records define the Multiprocessor Configuration
@@ -187,13 +35,13 @@ typedef struct {
* system.
*/
-struct Configuration_Table_MP {
- unsigned32 node; /* local node number */
- unsigned32 maximum_nodes; /* maximum # nodes in system */
- unsigned32 maximum_global_objects; /* maximum # global objects */
- unsigned32 maximum_proxies; /* maximum # proxies */
- rtems_mpci_table *User_mpci_table; /* pointer to MPCI table */
-};
+typedef struct {
+ unsigned32 node; /* local node number */
+ unsigned32 maximum_nodes; /* maximum # nodes in system */
+ unsigned32 maximum_global_objects; /* maximum # global objects */
+ unsigned32 maximum_proxies; /* maximum # proxies */
+ MPCI_Control *User_mpci_table; /* pointer to MPCI table */
+} rtems_multiprocessing_table;
/*
* The following records define the Configuration Table. The
@@ -207,7 +55,7 @@ struct Configuration_Table_MP {
* + clock ticks per task timeslice
*/
-struct Configuration_Table {
+typedef struct {
void *work_space_start;
unsigned32 work_space_size;
unsigned32 maximum_tasks;
@@ -224,92 +72,19 @@ struct Configuration_Table {
unsigned32 number_of_initialization_tasks;
rtems_initialization_tasks_table *User_initialization_tasks_table;
unsigned32 number_of_device_drivers;
+ unsigned32 maximum_devices;
rtems_driver_address_table *Device_driver_table;
rtems_extensions_table *User_extension_table;
rtems_multiprocessing_table *User_multiprocessing_table;
-};
-
-/*
- * The following defines the default Multiprocessing Configuration
- * Table. This table is used in a single processor system.
- */
-
-extern const rtems_multiprocessing_table
- _Configuration_Default_multiprocessing_table;
-
-/*
- * The following define the internal pointers to the user's
- * configuration information.
- */
-
-EXTERN rtems_configuration_table *_Configuration_Table;
-EXTERN rtems_multiprocessing_table *_Configuration_MP_table;
-EXTERN rtems_mpci_table *_Configuration_MPCI_table;
-
-/*
- *
- * _Configuration_Handler_initialization
- *
- * DESCRIPTION:
- *
- * This routine performs the initialization necessary for this handler.
- */
-
-STATIC INLINE void _Configuration_Handler_initialization(
- rtems_configuration_table *configuration_table,
- rtems_multiprocessing_table *multiprocessing_table,
- rtems_mpci_table *users_mpci_table
-);
-
-/*
- * _Configuration_Is_multiprocessing
- *
- * DESCRIPTION:
- *
- * This function determines if a multiprocessing application has been
- * configured, if so, TRUE is returned, otherwise FALSE is returned.
- */
-
-STATIC INLINE boolean _Configuration_Is_multiprocessing( void );
-
-/*
- * _Configuration_Is_null_driver_address_table_pointer
- *
- * DESCRIPTION:
- *
- * This function returns TRUE if the_table is NULL and FALSE otherwise.
- */
-
-STATIC INLINE boolean _Configuration_Is_null_driver_address_table_pointer(
- rtems_driver_address_table *the_table
-);
-
-/*
- * _Configuration_Is_null_extension_table_pointer
- *
- * DESCRIPTION:
- *
- * This function returns TRUE if the_table is NULL and FALSE otherwise.
- */
-
-STATIC INLINE boolean _Configuration_Is_null_extension_table_pointer(
- rtems_extensions_table *the_table
-);
+} rtems_configuration_table;
/*
- * _Configuration_Is_null_initialization_tasks_table_pointer
- *
- * DESCRIPTION:
- *
- * This function returns TRUE if the_table is NULL and FALSE otherwise.
+ * The following are provided strictly for the convenience of
+ * the user. They are not used in RTEMS itself.
*/
-STATIC INLINE boolean
- _Configuration_Is_null_initialization_tasks_table_pointer(
- rtems_initialization_tasks_table *the_table
-);
-
-#include <rtems/config.inl>
+EXTERN rtems_configuration_table *_Configuration_Table;
+EXTERN rtems_multiprocessing_table *_Configuration_MP_table;
#ifdef __cplusplus
}
diff --git a/c/src/exec/sapi/headers/directives.h b/c/src/exec/sapi/headers/directives.h
index 2b26672a0c..afcd56278f 100644
--- a/c/src/exec/sapi/headers/directives.h
+++ b/c/src/exec/sapi/headers/directives.h
@@ -106,6 +106,12 @@ extern "C" {
#define RTEMS_NUMBER_OF_ENTRY_POINTS 82
+/*
+ * The jump table of entry points into RTEMS directives.
+ */
+
+extern const void *_Entry_points[ RTEMS_NUMBER_OF_ENTRY_POINTS ];
+
#ifdef __cplusplus
}
#endif
diff --git a/c/src/exec/sapi/headers/extension.h b/c/src/exec/sapi/headers/extension.h
index b447cc43fe..57c8a54271 100644
--- a/c/src/exec/sapi/headers/extension.h
+++ b/c/src/exec/sapi/headers/extension.h
@@ -28,9 +28,28 @@
extern "C" {
#endif
-#include <rtems.h>
-#include <rtems/object.h>
-#include <rtems/userext.h>
+#include <rtems/core/object.h>
+#include <rtems/core/userext.h>
+#include <rtems/rtems/status.h> /* XXX */
+#include <rtems/rtems/types.h> /* XXX */
+
+/*
+ * Extension related types
+ */
+
+typedef User_extensions_routine rtems_extension;
+typedef User_extensions_thread_create_extension rtems_task_create_extension;
+typedef User_extensions_thread_delete_extension rtems_task_delete_extension;
+typedef User_extensions_thread_start_extension rtems_task_start_extension;
+typedef User_extensions_thread_restart_extension rtems_task_restart_extension;
+typedef User_extensions_thread_switch_extension rtems_task_switch_extension;
+typedef User_extensions_thread_post_switch_extension
+ rtems_task_post_switch_extension;
+typedef User_extensions_thread_begin_extension rtems_task_begin_extension;
+typedef User_extensions_thread_exitted_extension rtems_task_exitted_extension;
+typedef User_extensions_fatal_extension rtems_fatal_extension;
+
+typedef User_extensions_Table rtems_extensions_table;
/*
* The following defines the information control block used to manage
@@ -73,9 +92,9 @@ void _Extension_Manager_initialization(
*/
rtems_status_code rtems_extension_create(
- rtems_name name,
+ rtems_name name,
rtems_extensions_table *extension_table,
- Objects_Id *id
+ Objects_Id *id
);
/*
diff --git a/c/src/exec/sapi/headers/init.h b/c/src/exec/sapi/headers/init.h
index 8c6e34d2c3..e008c45ebc 100644
--- a/c/src/exec/sapi/headers/init.h
+++ b/c/src/exec/sapi/headers/init.h
@@ -30,9 +30,17 @@
extern "C" {
#endif
-#include <rtems/types.h>
+#include <rtems/rtems/types.h>
#include <rtems/config.h>
-#include <rtems/intr.h>
+#include <rtems/rtems/intr.h>
+
+/*
+ * The following defines the default Multiprocessing Configuration
+ * Table. This table is used in a single processor system.
+ */
+
+extern const rtems_multiprocessing_table
+ _Initialization_Default_multiprocessing_table;
/*
* rtems_initialize_executive
diff --git a/c/src/exec/sapi/headers/io.h b/c/src/exec/sapi/headers/io.h
index ef9fc69d03..6f3afba53e 100644
--- a/c/src/exec/sapi/headers/io.h
+++ b/c/src/exec/sapi/headers/io.h
@@ -32,16 +32,40 @@
extern "C" {
#endif
-#include <rtems/config.h>
+#include <rtems/rtems/status.h>
/*
- * The following declare the data required to manage the Device Driver
- * Address Table.
+ *
+ * The following defines the types for:
+ *
+ * + major and minor numbers
+ * + the return type of a device driver entry
+ * + a pointer to a device driver entry
+ * + an entry in the the Device Driver Address Table. Each entry in this
+ * table corresponds to an application provided device driver and
+ * defines the entry points for that device driver.
*/
+
+typedef unsigned32 rtems_device_major_number;
+typedef unsigned32 rtems_device_minor_number;
+
+typedef rtems_status_code rtems_device_driver;
+
+typedef rtems_device_driver ( *rtems_device_driver_entry )(
+ rtems_device_major_number,
+ rtems_device_minor_number,
+ void *
+ );
-EXTERN unsigned32 _IO_Number_of_drivers;
-EXTERN rtems_driver_address_table *_IO_Driver_address_table;
-
+typedef struct {
+ rtems_device_driver_entry initialization; /* initialization procedure */
+ rtems_device_driver_entry open; /* open request procedure */
+ rtems_device_driver_entry close; /* close request procedure */
+ rtems_device_driver_entry read; /* read request procedure */
+ rtems_device_driver_entry write; /* write request procedure */
+ rtems_device_driver_entry control; /* special functions procedure */
+} rtems_driver_address_table;
+
/*
* Table for the io device names
*/
@@ -53,12 +77,19 @@ typedef struct {
rtems_device_minor_number minor;
} rtems_driver_name_t;
-/*XXX this really should be allocated some better way... */
-/*XXX it should probably be a chain and use a 'maximum' drivers field
- * in config table */
-#define RTEMS_MAX_DRIVER_NAMES 20
-EXTERN rtems_driver_name_t rtems_driver_name_table[RTEMS_MAX_DRIVER_NAMES];
+/*
+ * This is the table of device names.
+ */
+
+/*
+ * The following declare the data required to manage the Driver
+ * Address Table and Device Name Table.
+ */
+EXTERN unsigned32 _IO_Number_of_drivers;
+EXTERN rtems_driver_address_table *_IO_Driver_address_table;
+EXTERN unsigned32 _IO_Number_of_devices;
+EXTERN rtems_driver_name_t *_IO_Driver_name_table;
/*
* _IO_Manager_initialization
@@ -70,7 +101,8 @@ EXTERN rtems_driver_name_t rtems_driver_name_table[RTEMS_MAX_DRIVER_NAMES];
STATIC INLINE void _IO_Manager_initialization(
rtems_driver_address_table *driver_table,
- unsigned32 number_of_drivers
+ unsigned32 number_of_drivers,
+ unsigned32 number_of_devices
);
/*
diff --git a/c/src/exec/sapi/headers/sptables.h b/c/src/exec/sapi/headers/sptables.h
index bbfd132760..2a91025100 100644
--- a/c/src/exec/sapi/headers/sptables.h
+++ b/c/src/exec/sapi/headers/sptables.h
@@ -23,13 +23,33 @@ extern "C" {
#include <rtems/config.h>
+#include <rtems/debug.h>
+#include <rtems/fatal.h>
+#include <rtems/init.h>
+#include <rtems/io.h>
+#include <rtems/sysstate.h>
+
+#include <rtems/rtems/intr.h>
+#include <rtems/rtems/clock.h>
+#include <rtems/rtems/tasks.h>
+#include <rtems/rtems/dpmem.h>
+#include <rtems/rtems/event.h>
+#include <rtems/rtems/message.h>
+#include <rtems/rtems/mp.h>
+#include <rtems/rtems/part.h>
+#include <rtems/rtems/ratemon.h>
+#include <rtems/rtems/region.h>
+#include <rtems/rtems/sem.h>
+#include <rtems/rtems/signal.h>
+#include <rtems/rtems/timer.h>
+
/*
* This is the default Multiprocessing Configuration Table.
* It is used in single processor configurations.
*/
const rtems_multiprocessing_table
- _Configuration_Default_multiprocessing_table = {
+ _Initialization_Default_multiprocessing_table = {
1, /* local node number */
1, /* maximum number nodes in system */
0, /* maximum number global objects */