summaryrefslogtreecommitdiffstats
path: root/doc/user
diff options
context:
space:
mode:
Diffstat (limited to 'doc/user')
-rw-r--r--doc/user/conf.t271
-rw-r--r--doc/user/init.t6
2 files changed, 262 insertions, 15 deletions
diff --git a/doc/user/conf.t b/doc/user/conf.t
index b342c24bd6..e0b7eebe11 100644
--- a/doc/user/conf.t
+++ b/doc/user/conf.t
@@ -37,6 +37,7 @@ argument to the initialize_executive directive, which MUST be
the first RTEMS directive called. The RTEMS Configuration Table
is defined in the following @value{RTEMS-LANGUAGE} @value{RTEMS-STRUCTURE}:
+@ifset is-C
@example
@group
typedef struct @{
@@ -55,6 +56,30 @@ typedef struct @{
@} rtems_configuration_table;
@end group
@end example
+@end ifset
+
+@ifset is-Ada
+@example
+type Configuration_Table is
+ record
+ Work_Space_Start : RTEMS.Address;
+ Work_Space_Size : RTEMS.Unsigned32;
+ Maximum_Extensions : RTEMS.Unsigned32;
+ Microseconds_Per_Tick : RTEMS.Unsigned32;
+ Ticks_Per_Timeslice : RTEMS.Unsigned32;
+ Maximum_Devices : RTEMS.Unsigned32;
+ Number_Of_Device_Drivers : RTEMS.Unsigned32;
+ Device_Driver_Table : RTEMS.Driver_Address_Table_Pointer;
+ User_Extension_Table : RTEMS.Extensions_Table_Pointer;
+ User_Multiprocessing_Table : RTEMS.Multiprocessing_Table_Pointer;
+ RTEMS_API_Configuration : RTEMS.API_Configuration_Table_Pointer;
+ POSIX_API_Configuration :
+ RTEMS.POSIX_API_Configuration_Table_Pointer;
+ end record;
+
+type Configuration_Table_Pointer is access all Configuration_Table;
+@end example
+@end ifset
@table @b
@item work_space_start
@@ -128,6 +153,7 @@ For example, the user can configure the maximum number of tasks for
this application. The RTEMS API Configuration Table is defined in
the following @value{RTEMS-LANGUAGE} @value{RTEMS-STRUCTURE}:
+@ifset is-C
@example
@group
typedef struct @{
@@ -144,6 +170,28 @@ typedef struct @{
@} rtems_api_configuration_table;
@end group
@end example
+@end ifset
+
+@ifset is-Ada
+@example
+type API_Configuration_Table is
+ record
+ Maximum_Tasks : RTEMS.Unsigned32;
+ Maximum_Timers : RTEMS.Unsigned32;
+ Maximum_Semaphores : RTEMS.Unsigned32;
+ Maximum_Message_queues : RTEMS.Unsigned32;
+ Maximum_Partitions : RTEMS.Unsigned32;
+ Maximum_Regions : RTEMS.Unsigned32;
+ Maximum_Ports : RTEMS.Unsigned32;
+ Maximum_Periods : RTEMS.Unsigned32;
+ Number_Of_Initialization_Tasks : RTEMS.Unsigned32;
+ User_Initialization_Tasks_Table :
+ RTEMS.Initialization_Tasks_Table_Pointer;
+ end record;
+
+type API_Configuration_Table_Pointer is access all API_Configuration_Table;
+@end example
+@end ifset
@table @b
@item maximum_tasks
@@ -198,10 +246,11 @@ For example, the user can configure the maximum number of threads for
this application. The POSIX API Configuration Table is defined in
the following @value{RTEMS-LANGUAGE} @value{RTEMS-STRUCTURE}:
+@ifset is-C
@example
@group
typedef struct @{
- void *(*entry)(void *);
+ void *(*thread_entry)(void *);
@} posix_initialization_threads_table;
typedef struct @{
@@ -215,6 +264,45 @@ typedef struct @{
@} posix_api_configuration_table;
@end group
@end example
+@end ifset
+
+@ifset is-Ada
+@example
+ type POSIX_Thread_Entry is access procedure (
+ Argument : in RTEMS.Address
+ );
+
+ type POSIX_Initialization_Threads_Table_Entry is
+ record
+ Thread_Entry : RTEMS.POSIX_Thread_Entry;
+ end record;
+
+ type POSIX_Initialization_Threads_Table is array
+ ( RTEMS.Unsigned32 range <> ) of
+ RTEMS.POSIX_Initialization_Threads_Table_Entry;
+
+ type POSIX_Initialization_Threads_Table_Pointer is access all
+ POSIX_Initialization_Threads_Table;
+
+ type POSIX_API_Configuration_Table_Entry is
+ record
+ Maximum_Threads : Interfaces.C.Int;
+ Maximum_Mutexes : Interfaces.C.Int;
+ Maximum_Condition_Variables : Interfaces.C.Int;
+ Maximum_Keys : Interfaces.C.Int;
+ Maximum_Queued_Signals : Interfaces.C.Int;
+ Number_Of_Initialization_Tasks : Interfaces.C.Int;
+ User_Initialization_Tasks_Table :
+ RTEMS.POSIX_Initialization_Threads_Table_Pointer;
+ end record;
+
+ type POSIX_API_Configuration_Table is array ( RTEMS.Unsigned32 range <> ) of
+ RTEMS.POSIX_API_Configuration_Table_Entry;
+
+ type POSIX_API_Configuration_Table_Pointer is access all
+ RTEMS.POSIX_API_Configuration_Table;
+@end example
+@end ifset
@table @b
@item maximum_threads
@@ -278,6 +366,7 @@ Configuration Table. The format of each entry in the
Initialization Task Table is defined in the following C
structure:
+@ifset is-C
@example
typedef struct @{
rtems_name name;
@@ -289,6 +378,28 @@ typedef struct @{
rtems_task_argument argument;
@} rtems_initialization_tasks_table;
@end example
+@end ifset
+
+@ifset is-Ada
+@example
+type Initialization_Tasks_Table_Entry is
+ record
+ Name : RTEMS.Name; -- task name
+ Stack_Size : RTEMS.Unsigned32; -- task stack size
+ Initial_Priority : RTEMS.Task_priority; -- task priority
+ Attribute_Set : RTEMS.Attribute; -- task attributes
+ Entry_Point : RTEMS.Task_Entry; -- task entry point
+ Mode_Set : RTEMS.Mode; -- task initial mode
+ Argument : RTEMS.Unsigned32; -- task argument
+ end record;
+
+type Initialization_Tasks_Table is array ( RTEMS.Unsigned32 range <> ) of
+ RTEMS.Initialization_Tasks_Table_Entry;
+
+type Initialization_Tasks_Table_Pointer is access all
+ Initialization_Tasks_Table;
+@end example
+@end ifset
@table @b
@item name
@@ -316,6 +427,7 @@ is the initial argument for this initialization task.
A typical declaration for an Initialization Task Table might appear as follows:
+@ifset is-C
@example
rtems_initialization_tasks_table
Initialization_tasks[2] = @{
@@ -333,12 +445,34 @@ Initialization_tasks[2] = @{
250,
FLOATING_POINT,
Init_2,
- INTERRUPT_LEVEL(0)|NO_PREEMPT,
+ NO_PREEMPT,
2
@}
@};
@end example
+@end ifset
+
+@ifset is-Ada
+@example
+Initialization_Tasks : aliased RTEMS.Initialization_Tasks_Table( 1 .. 2 ) := (
+ (INIT_1_NAME,
+ 1024,
+ 1,
+ RTEMS.Default_Attributes,
+ Init_1'Access,
+ RTEMS.Default_Modes,
+ 1),
+ (INIT_2_NAME,
+ 1024,
+ 250,
+ RTEMS.Floating_Point,
+ Init_2'Access,
+ RTEMS.No_Preempt,
+ 2)
+);
+@end example
+@end ifset
@ifinfo
@node Configuring a System Driver Address Table, Configuring a System User Extensions Table, Configuring a System Initialization Task Table, Configuring a System
@@ -354,6 +488,7 @@ Configuration Table. The format of each entry in the Device
Driver Table is defined in
the following @value{RTEMS-LANGUAGE} @value{RTEMS-STRUCTURE}:
+@ifset is-C
@example
typedef struct @{
rtems_device_driver_entry initialization;
@@ -364,6 +499,26 @@ typedef struct @{
rtems_device_driver_entry control;
@} rtems_driver_address_table;
@end example
+@end ifset
+
+@ifset is-Ada
+@example
+type Driver_Address_Table_Entry is
+ record
+ Initialization : RTEMS.Device_Driver_Entry;
+ Open : RTEMS.Device_Driver_Entry;
+ Close : RTEMS.Device_Driver_Entry;
+ Read : RTEMS.Device_Driver_Entry;
+ Write : RTEMS.Device_Driver_Entry;
+ Control : RTEMS.Device_Driver_Entry;
+ end record;
+
+type Driver_Address_Table is array ( RTEMS.Unsigned32 range <> ) of
+ RTEMS.Driver_Address_Table_Entry;
+
+type Driver_Address_Table_Pointer is access all Driver_Address_Table;
+@end example
+@end ifset
@table @b
@item initialization
@@ -393,6 +548,7 @@ executed in this situation.
A typical declaration for a Device Driver Table might appear as follows:
+@ifset is-C
@example
rtems_driver_address_table Driver_table[2] = @{
@{ tty_initialize, tty_open, tty_close, /* major = 0 */
@@ -403,6 +559,12 @@ rtems_driver_address_table Driver_table[2] = @{
@}
@};
@end example
+@end ifset
+
+@ifset is-Ada
+@example
+@end example
+@end ifset
More information regarding the construction and
operation of device drivers is provided in the I/O Manager
@@ -422,19 +584,50 @@ in addition to this single static set. The format of each entry
in the User Extensions Table is defined in the following C
structure:
+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_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;
+
+@ifset is-C
@example
typedef struct @{
- User_extensions_thread_create_extension thread_create;
- User_extensions_thread_start_extension thread_start;
- User_extensions_thread_restart_extension thread_restart;
- User_extensions_thread_delete_extension thread_delete;
- User_extensions_thread_switch_extension thread_switch;
- User_extensions_thread_post_switch_extension thread_post_switch;
- User_extensions_thread_begin_extension thread_begin;
- User_extensions_thread_exitted_extension thread_exitted;
- User_extensions_fatal_error_extension fatal;
+ rtems_task_create_extension thread_create;
+ rtems_task_start_extension thread_start;
+ rtems_task_restart_extension thread_restart;
+ rtems_task_delete_extension thread_delete;
+ rtems_task_switch_extension thread_switch;
+ rtems_task_post_switch_extension thread_post_switch;
+ rtems_task_begin_extension thread_begin;
+ rtems_task_exitted_extension thread_exitted;
+ rtems_fatal_extension fatal;
@} User_extensions_Table;
@end example
+@end ifset
+
+@ifset is-Ada
+@example
+type Extensions_Table_Entry is
+ record
+ Thread_Create : RTEMS.Thread_Create_Extension;
+ Thread_Start : RTEMS.Thread_Start_Extension;
+ Thread_Restart : RTEMS.Thread_Restart_Extension;
+ Thread_Delete : RTEMS.Thread_Delete_Extension;
+ Thread_Switch : RTEMS.Thread_Switch_Extension;
+ Thread_Post_Switch : RTEMS.Thread_Post_Switch_Extension;
+ Thread_Begin : RTEMS.Thread_Begin_Extension;
+ Thread_Exitted : RTEMS.Thread_Exitted_Extension;
+ Fatal : RTEMS.Fatal_Error_Extension;
+ end record;
+@end example
+@end ifset
@table @b
@@ -511,6 +704,7 @@ A typical declaration for a User Extension Table
which defines the TASK_CREATE, TASK_DELETE, TASK_SWITCH, and
FATAL extension might appear as follows:
+@ifset is-C
@example
rtems_extensions_table User_extensions = @{
task_create_extension,
@@ -523,6 +717,23 @@ rtems_extensions_table User_extensions = @{
fatal_extension
@};
@end example
+@end ifset
+
+@ifset is-Ada
+User_Extensions : RTEMS.Extensions_Table := (
+ Task_Create_Extension'Access,
+ null,
+ null,
+ Task_Delete_Extension'Access,
+ Task_Switch_Extension'Access,
+ null,
+ null,
+ Fatal_Extension'Access
+);
+@example
+
+@end example
+@end ifset
More information regarding the user extensions is
provided in the User Extensions chapter.
@@ -545,6 +756,7 @@ Multiprocessing chapter. The format of the Multiprocessor
Configuration Table is defined in
the following @value{RTEMS-LANGUAGE} @value{RTEMS-STRUCTURE}:
+@ifset is-C
@example
typedef struct @{
rtems_unsigned32 node;
@@ -554,6 +766,22 @@ typedef struct @{
rtems_mpci_table *User_mpci_table;
@} rtems_multiprocessing_table;
@end example
+@end ifset
+
+@ifset is-Ada
+@example
+type Multiprocessing_Table is
+ record
+ Node : RTEMS.Unsigned32;
+ Maximum_Nodes : RTEMS.Unsigned32;
+ Maximum_Global_Objects : RTEMS.Unsigned32;
+ Maximum_Proxies : RTEMS.Unsigned32;
+ User_MPCI_Table : RTEMS.MPCI_Table_Pointer;
+ end record;
+
+type Multiprocessing_Table_Pointer is access all Multiprocessing_Table;
+@end example
+@end ifset
@table @b
@item node
@@ -603,9 +831,10 @@ regarding its entries can be found in the next section.
The format of this table is defined in
the following @value{RTEMS-LANGUAGE} @value{RTEMS-STRUCTURE}:
+@ifset is-C
@example
typedef struct @{
- rtems_unsigned32 default_timeout; /* in ticks */
+ rtems_unsigned32 default_timeout; /* in ticks */
rtems_unsigned32 maximum_packet_size;
rtems_mpci_initialization_entry initialization;
rtems_mpci_get_packet_entry get_packet;
@@ -614,6 +843,24 @@ typedef struct @{
rtems_mpci_receive_entry receive;
@} rtems_mpci_table;
@end example
+@end ifset
+
+@ifset is-Ada
+@example
+type MPCI_Table is
+ record
+ Default_Timeout : RTEMS.Unsigned32; -- in ticks
+ Maximum_Packet_Size : RTEMS.Unsigned32;
+ Initialization : RTEMS.MPCI_Initialization_Entry;
+ Get_Packet : RTEMS.MPCI_Get_Packet_Entry;
+ Return_Packet : RTEMS.MPCI_Return_Packet_Entry;
+ Send : RTEMS.MPCI_Send_Entry;
+ Receive : RTEMS.MPCI_Receive_Entry;
+ end record;
+
+type MPCI_Table_Pointer is access all MPCI_Table;
+@end example
+@end ifset
@table @b
@item default_timeout
diff --git a/doc/user/init.t b/doc/user/init.t
index 3dcf7d9f8e..83625c5fd4 100644
--- a/doc/user/init.t
+++ b/doc/user/init.t
@@ -258,9 +258,9 @@ void rtems_initialize_executive(
@ifset is-Ada
@example
-procedure Initialize_Executive(
+procedure Initialize_Executive (
Configuration_Table : in RTEMS.Configuration_Table_Pointer;
- CPU_Table : in RTEMS.CPU_Table
+ CPU_Table : in RTEMS.CPU_Table_Pointer
);
@end example
@end ifset
@@ -318,7 +318,7 @@ rtems_interrupt_level rtems_initialize_executive_early(
@ifset is-Ada
@example
-procedure rtems.initialize_executive_early(
+procedure Initialize_Executive_Early(
Configuration_Table : in RTEMS.Configuration_Table_Pointer;
CPU_Table : in RTEMS.Cpu_Table;
Level : out RTEMS.ISR_Level