diff options
Diffstat (limited to 'c/src/exec/sapi/include/rtems/config.h')
-rw-r--r-- | c/src/exec/sapi/include/rtems/config.h | 265 |
1 files changed, 20 insertions, 245 deletions
diff --git a/c/src/exec/sapi/include/rtems/config.h b/c/src/exec/sapi/include/rtems/config.h index 766ea4a4a8..31e8093387 100644 --- a/c/src/exec/sapi/include/rtems/config.h +++ b/c/src/exec/sapi/include/rtems/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 } |