summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--doc/user/c_user.texi6
-rw-r--r--doc/user/clock.t63
-rw-r--r--doc/user/concepts.t1
-rw-r--r--doc/user/conf.t15
-rw-r--r--doc/user/dpmem.t68
-rw-r--r--doc/user/event.t26
-rw-r--r--doc/user/fatal.t12
-rw-r--r--doc/user/init.t45
-rw-r--r--doc/user/intr.t30
-rw-r--r--doc/user/io.t122
-rw-r--r--doc/user/mp.t59
-rw-r--r--doc/user/msg.t106
-rw-r--r--doc/user/overview.t7
-rw-r--r--doc/user/part.t64
-rw-r--r--doc/user/preface.texi27
-rw-r--r--doc/user/region.t92
-rw-r--r--doc/user/rtmon.t85
-rw-r--r--doc/user/sem.t62
-rw-r--r--doc/user/signal.t36
-rw-r--r--doc/user/task.t173
-rw-r--r--doc/user/timer.t98
-rw-r--r--doc/user/userext.t171
22 files changed, 1322 insertions, 46 deletions
diff --git a/doc/user/c_user.texi b/doc/user/c_user.texi
index 7d0dd0ad90..3ad9da82da 100644
--- a/doc/user/c_user.texi
+++ b/doc/user/c_user.texi
@@ -37,7 +37,11 @@ END-INFO-DIR-ENTRY
@c variable substitution info:
@c
-@c @set RTEMS-LANGUAGE C
+@set is-C
+@clear is-Ada
+@set RTEMS-LANGUAGE C
+@set RTEMS-STRUCTURE structure
+@set RTEMS-ROUTINE function
@c the language is @value{RTEMS-LANGUAGE}
@c NOTE: don't use underscore in the name
@c
diff --git a/doc/user/clock.t b/doc/user/clock.t
index f90d5c20b6..aaf9f3b9cc 100644
--- a/doc/user/clock.t
+++ b/doc/user/clock.t
@@ -69,6 +69,7 @@ The clock facilities of the clock manager operate
upon calendar time. These directives utilize the following date
and time structure for the native time and date format:
+@ifset is-C
@example
struct rtems_tod_control @{
rtems_unsigned32 year; /* greater than 1987 */
@@ -82,6 +83,22 @@ struct rtems_tod_control @{
typedef struct rtems_tod_control rtems_time_of_day;
@end example
+@end ifset
+
+@ifset is-Ada
+@example
+type Time_Of_Day is
+ record
+ Year : RTEMS.Unsigned32; -- year, A.D.
+ Month : RTEMS.Unsigned32; -- month, 1 .. 12
+ Day : RTEMS.Unsigned32; -- day, 1 .. 31
+ Hour : RTEMS.Unsigned32; -- hour, 0 .. 23
+ Minute : RTEMS.Unsigned32; -- minute, 0 .. 59
+ Second : RTEMS.Unsigned32; -- second, 0 .. 59
+ Ticks : RTEMS.Unsigned32; -- elapsed ticks between seconds
+ end record;
+@end example
+@end ifset
The native date and time format is the only format
@@ -91,15 +108,26 @@ clock_get directive. Some applications expect to operate on a
directive can optionally return the current date and time in the
following structure:
+@ifset is-C
@example
@group
typedef struct @{
rtems_unsigned32 seconds; /* seconds since RTEMS epoch*/
rtems_unsigned32 microseconds; /* since last second */
-@} rtems_clock_time_value_control;
+@} rtems_clock_time_value;
@end group
@end example
+@end ifset
+@ifset is-Ada
+@example
+type Clock_Time_Value is
+ record
+ Seconds : Unsigned32;
+ Microseconds : Unsigned32;
+ end record;
+@end example
+@end ifset
The seconds field in this structure is the number of
seconds since the RTEMS epoch of January 1, 1988.
@@ -246,11 +274,22 @@ and status codes.
@subheading CALLING SEQUENCE:
+@ifset is-C
@example
rtems_status_code rtems_clock_set(
rtems_time_of_day *time_buffer
);
@end example
+@end ifset
+
+@ifset is-Ada
+@example
+procedure Clock_Set (
+ Time_Buffer : in RTEMS.Time_Of_Day;
+ Result : out RTEMS.Status_Codes
+);
+@end example
+@end ifset
@subheading DIRECTIVE STATUS CODES:
@code{SUCCESSFUL} - date and time set successfully@*
@@ -288,12 +327,24 @@ to application specific specifications.
@subheading CALLING SEQUENCE:
+@ifset is-C
@example
rtems_status_code rtems_clock_get(
rtems_clock_get_options option,
void *time_buffer
);
@end example
+@end ifset
+
+@ifset is-Ada
+@example
+procedure Clock_Get (
+ Option : in RTEMS.Clock_Get_Options;
+ Time_Buffer : in RTEMS.Address;
+ Result : out RTEMS.Status_Codes
+);
+@end example
+@end ifset
@subheading DIRECTIVE STATUS CODES:
@code{SUCCESSFUL} - current time obtained successfully@*
@@ -329,9 +380,19 @@ to application specific specifications.
@subheading CALLING SEQUENCE:
+@ifset is-C
@example
rtems_status_code rtems_clock_tick( void );
@end example
+@end ifset
+
+@ifset is-Ada
+@example
+procedure Clock_Tick (
+ Result : out RTEMS.Status_Codes
+);
+@end example
+@end ifset
@subheading DIRECTIVE STATUS CODES:
@code{SUCCESSFUL} - current time obtained successfully
diff --git a/doc/user/concepts.t b/doc/user/concepts.t
index fabcfdf57d..8c43e1994e 100644
--- a/doc/user/concepts.t
+++ b/doc/user/concepts.t
@@ -83,7 +83,6 @@ called the object index, ranges in value from 1 to the maximum
number of objects configured for this object type.
@ifset use-ascii
-ASCII
@example
@group
31 26 25 16 15 0
diff --git a/doc/user/conf.t b/doc/user/conf.t
index 126d9b584b..b342c24bd6 100644
--- a/doc/user/conf.t
+++ b/doc/user/conf.t
@@ -35,7 +35,7 @@ configure the number of device drivers or which APIs may be used.
THe address of the user-defined Configuration Table is passed as an
argument to the initialize_executive directive, which MUST be
the first RTEMS directive called. The RTEMS Configuration Table
-is defined in the following C structure:
+is defined in the following @value{RTEMS-LANGUAGE} @value{RTEMS-STRUCTURE}:
@example
@group
@@ -126,7 +126,7 @@ The RTEMS API Configuration Table is used to configure the
managers which constitute the RTEMS API for a particular application.
For example, the user can configure the maximum number of tasks for
this application. The RTEMS API Configuration Table is defined in
-the following C structure:
+the following @value{RTEMS-LANGUAGE} @value{RTEMS-STRUCTURE}:
@example
@group
@@ -196,7 +196,7 @@ The POSIX API Configuration Table is used to configure the
managers which constitute the POSIX API for a particular application.
For example, the user can configure the maximum number of threads for
this application. The POSIX API Configuration Table is defined in
-the following C structure:
+the following @value{RTEMS-LANGUAGE} @value{RTEMS-STRUCTURE}:
@example
@group
@@ -351,7 +351,8 @@ configured in the system. The table contains one entry for each
device driver required by the application. The number of
entries is defined in the number_of_device_drivers entry in the
Configuration Table. The format of each entry in the Device
-Driver Table is defined in the following C structure:
+Driver Table is defined in
+the following @value{RTEMS-LANGUAGE} @value{RTEMS-STRUCTURE}:
@example
typedef struct @{
@@ -541,7 +542,8 @@ User_multiprocessing_table entry in the primary Configuration
Table. Further details regarding many of the entries in the
Multiprocessor Configuration Table will be provided in the
Multiprocessing chapter. The format of the Multiprocessor
-Configuration Table is defined in the following C structure:
+Configuration Table is defined in
+the following @value{RTEMS-LANGUAGE} @value{RTEMS-STRUCTURE}:
@example
typedef struct @{
@@ -598,7 +600,8 @@ regarding its entries can be found in the next section.
@end ifinfo
@section Multiprocessor Communications Interface Table
-The format of this table is defined in the following C structure:
+The format of this table is defined in
+the following @value{RTEMS-LANGUAGE} @value{RTEMS-STRUCTURE}:
@example
typedef struct @{
diff --git a/doc/user/dpmem.t b/doc/user/dpmem.t
index 9432323b02..895294e215 100644
--- a/doc/user/dpmem.t
+++ b/doc/user/dpmem.t
@@ -147,6 +147,7 @@ constants, usage, and status codes.
@subheading CALLING SEQUENCE:
+@ifset is-C
@example
rtems_status_code rtems_port_create(
rtems_name name,
@@ -156,6 +157,20 @@ rtems_status_code rtems_port_create(
rtems_id *id
);
@end example
+@end ifset
+
+@ifset is-Ada
+@example
+procedure Port_Create (
+ Name : in RTEMS.Name;
+ Internal_Start : in RTEMS.Address;
+ External_Start : in RTEMS.Address;
+ Length : in RTEMS.Unsigned32;
+ ID : out RTEMS.ID;
+ Result : out RTEMS.Status_Codes
+);
+@end example
+@end ifset
@subheading DIRECTIVE STATUS CODES:
@code{SUCCESSFUL} - port created successfully@*
@@ -192,12 +207,24 @@ preempted.
@subheading CALLING SEQUENCE:
+@ifset is-C
@example
rtems_status_code rtems_port_ident(
rtems_name name,
rtems_id *id
);
@end example
+@end ifset
+
+@ifset is-Ada
+@example
+procedure Port_Ident (
+ Name : in RTEMS.Name;
+ ID : out RTEMS.ID;
+ Result : out RTEMS.Status_Codes
+);
+@end example
+@end ifset
@subheading DIRECTIVE STATUS CODES:
@code{SUCCESSFUL} - port identified successfully@*
@@ -225,11 +252,22 @@ preempted.
@subheading CALLING SEQUENCE:
+@ifset is-C
@example
rtems_status_code rtems_port_delete(
rtems_id id
);
@end example
+@end ifset
+
+@ifset is-Ada
+@example
+procedure Port_Delete (
+ ID : in RTEMS.ID;
+ Result : out RTEMS.Status_Codes
+);
+@end example
+@end ifset
@subheading DIRECTIVE STATUS CODES:
@code{SUCCESSFUL} - port deleted successfully@*
@@ -258,6 +296,7 @@ delete the port.
@subheading CALLING SEQUENCE:
+@ifset is-C
@example
rtems_status_code rtems_port_external_to_internal(
rtems_id id,
@@ -265,6 +304,18 @@ rtems_status_code rtems_port_external_to_internal(
void **internal
);
@end example
+@end ifset
+
+@ifset is-Ada
+@example
+procedure Port_External_To_Internal (
+ ID : in RTEMS.ID;
+ External : in RTEMS.Address;
+ Internal : out RTEMS.Address;
+ Result : out RTEMS.Status_Codes
+);
+@end example
+@end ifset
@subheading DIRECTIVE STATUS CODES:
@code{SUCCESSFUL} - always successful
@@ -292,6 +343,7 @@ preempted.
@subheading CALLING SEQUENCE:
+@ifset is-C
@example
rtems_status_code rtems_port_internal_to_external(
rtems_id id,
@@ -299,6 +351,18 @@ rtems_status_code rtems_port_internal_to_external(
void **external
);
@end example
+@end ifset
+
+@ifset is-Ada
+@example
+procedure Port_Internal_To_External (
+ ID : in RTEMS.ID;
+ Internal : in RTEMS.Address;
+ External : out RTEMS.Address;
+ Result : out RTEMS.Status_Codes
+);
+@end example
+@end ifset
@subheading DIRECTIVE STATUS CODES:
@code{SUCCESSFUL} - always successful
@@ -318,7 +382,3 @@ This directive is callable from an ISR.
This directive will not cause the calling task to be
preempted.
-
-
-
-
diff --git a/doc/user/event.t b/doc/user/event.t
index 0ec198a5c0..7fa45e4b22 100644
--- a/doc/user/event.t
+++ b/doc/user/event.t
@@ -247,12 +247,24 @@ and status codes.
@subheading CALLING SEQUENCE:
+@ifset is-C
@example
rtems_status_code rtems_event_send (
rtems_id id,
rtems_event_set event_in
);
@end example
+@end ifset
+
+@ifset is-Ada
+@example
+procedure Event_Send (
+ ID : in RTEMS.ID;
+ Event_In : in RTEMS.Event_Set;
+ Result : out RTEMS.Status_Codes
+);
+@end example
+@end ifset
@subheading DIRECTIVE STATUS CODES:
@code{SUCCESSFUL} - event set sent successfully@*
@@ -293,6 +305,7 @@ remote node to send the event set to the appropriate task.
@subheading CALLING SEQUENCE:
+@ifset is-C
@example
rtems_status_code rtems_event_receive (
rtems_event_set event_in,
@@ -301,6 +314,19 @@ rtems_status_code rtems_event_receive (
rtems_event_set *event_out
);
@end example
+@end ifset
+
+@ifset is-Ada
+@example
+procedure Event_Receive (
+ Event_In : in RTEMS.Event_Set;
+ Option_Set : in RTEMS.Option;
+ Ticks : in RTEMS.Interval;
+ Event_Out : out RTEMS.Event_Set;
+ Result : out RTEMS.Status_Codes
+);
+@end example
+@end ifset
@subheading DIRECTIVE STATUS CODES:
@code{SUCCESSFUL} - event received successfully@*
diff --git a/doc/user/fatal.t b/doc/user/fatal.t
index 4f15684195..36b75c59f5 100644
--- a/doc/user/fatal.t
+++ b/doc/user/fatal.t
@@ -30,8 +30,6 @@ manager is:
@item @code{fatal_error_occurred} - Invoke the fatal error handler
@end itemize
-
-
@ifinfo
@node Fatal Error Manager Background, Fatal Error Manager Operations, Fatal Error Manager Introduction, Fatal Error Manager
@end ifinfo
@@ -148,11 +146,21 @@ constants, usage, and status codes.
@subheading CALLING SEQUENCE:
+@ifset is-C
@example
void volatile rtems_fatal_error_occurred(
rtems_unsigned32 the_error
);
@end example
+@end ifset
+
+@ifset is-Ada
+@example
+procedure Fatal_Error_Occurred (
+ The_Error : in RTEMS.Unsigned32
+);
+@end example
+@end ifset
@subheading DIRECTIVE STATUS CODES
diff --git a/doc/user/init.t b/doc/user/init.t
index 6b558d4ab4..3dcf7d9f8e 100644
--- a/doc/user/init.t
+++ b/doc/user/init.t
@@ -247,12 +247,23 @@ constants, usage, and status codes.
@subheading CALLING SEQUENCE:
+@ifset is-C
@example
-rtems_interrupt_level rtems_initialize_executive_early(
+void rtems_initialize_executive(
rtems_configuration_table *configuration_table,
rtems_cpu_table *cpu_table
);
@end example
+@end ifset
+
+@ifset is-Ada
+@example
+procedure Initialize_Executive(
+ Configuration_Table : in RTEMS.Configuration_Table_Pointer;
+ CPU_Table : in RTEMS.CPU_Table
+);
+@end example
+@end ifset
@subheading DIRECTIVE STATUS CODES:
@@ -296,12 +307,24 @@ initialize_executive_late with no intervening actions.
@subheading CALLING SEQUENCE:
+@ifset is-C
@example
rtems_interrupt_level rtems_initialize_executive_early(
rtems_configuration_table *configuration_table,
rtems_cpu_table *cpu_table
);
@end example
+@end ifset
+
+@ifset is-Ada
+@example
+procedure rtems.initialize_executive_early(
+ Configuration_Table : in RTEMS.Configuration_Table_Pointer;
+ CPU_Table : in RTEMS.Cpu_Table;
+ Level : out RTEMS.ISR_Level
+);
+@end example
+@end ifset
@subheading DIRECTIVE STATUS CODES:
@@ -336,11 +359,21 @@ initialize_executive_early and initialize_executive_late.
@subheading CALLING SEQUENCE:
+@ifset is-C
@example
void rtems_initialize_executive_late(
rtems_interrupt_level bsp_level
);
@end example
+@end ifset
+
+@ifset is-Ada
+@example
+procedure Initialize_Executive_Late(
+ BSP_Level : in RTEMS.ISR_Level
+);
+@end example
+@end ifset
@subheading DIRECTIVE STATUS CODES:
@@ -381,11 +414,21 @@ initialize_executive_early and initialize_executive_late.
@subheading CALLING SEQUENCE:
+@ifset is-C
@example
void rtems_shutdown_executive(
rtems_unsigned32 result
);
@end example
+@end ifset
+
+@ifset is-Ada
+@example
+procedure Shutdown_Executive(
+ result : in RTEMS.Unsigned32
+);
+@end example
+@end ifset
@subheading DIRECTIVE STATUS CODES:
diff --git a/doc/user/intr.t b/doc/user/intr.t
index 8eb076e8f4..2b7b2a15bd 100644
--- a/doc/user/intr.t
+++ b/doc/user/intr.t
@@ -56,7 +56,8 @@ The interrupt manager allows the application to
connect a function to a hardware interrupt vector. When an
interrupt occurs, the processor will automatically vector to
RTEMS. RTEMS saves and restores all registers which are not
-preserved by the normal C calling convention for the target
+preserved by the normal @value{RTEMS-LANGUAGE} calling convention
+for the target
processor and invokes the user's ISR. The user's ISR is
responsible for processing the interrupt, clearing the interrupt
if necessary, and device specific manipulation.
@@ -66,11 +67,21 @@ an interrupt vector. The interrupt service routine is assumed
to abide by these conventions and have a prototype similar to
the following:
+@ifset is-C
@example
rtems_isr user_isr(
rtems_vector_number vector
);
@end example
+@end ifset
+
+@ifset is-Ada
+@example
+procedure User_ISR (
+ vector : in RTEMS.Vector_Number
+);
+@end example
+@end ifset
The vector number argument is provided by RTEMS to
allow the application to identify the interrupt source. This
@@ -99,7 +110,7 @@ directives which have been invoked by an ISR.
Applications must adhere to the following rule if
proper task scheduling and dispatching is to be performed:
-@itemize @code{ }
+@itemize @b{ }
@item @b{The interrupt manager must be used for all ISRs which
may be interrupted by the highest priority ISR which invokes an
@@ -120,8 +131,6 @@ interrupt nesting by allowing the nested ISRs to terminate
without performing any dispatch processing. Only when the
outermost ISR terminates will the postponed dispatching occur.
-
-
@ifinfo
@node RTEMS Interrupt Levels, Disabling of Interrupts by RTEMS, Processing an Interrupt, Interrupt Manager Background
@end ifinfo
@@ -272,6 +281,7 @@ constants, usage, and status codes.
@subheading CALLING SEQUENCE:
+@ifset is-C
@example
rtems_status_code rtems_interrupt_catch(
rtems_isr_entry new_isr_handler,
@@ -279,6 +289,18 @@ rtems_status_code rtems_interrupt_catch(
rtems_isr_entry *old_isr_handler
);
@end example
+@end ifset
+
+@ifset is-Ada
+@example
+procedure Interrupt_Catch (
+ New_ISR_handler : in RTEMS.Address;
+ Vector : in RTEMS.Vector_Number;
+ Old_ISR_Handler : out RTEMS.Address;
+ Result : out RTEMS.Status_Codes
+);
+@end example
+@end ifset
@subheading DIRECTIVE STATUS CODES:
@code{SUCCESSFUL} - ISR established successfully@*
diff --git a/doc/user/io.t b/doc/user/io.t
index 5176b89224..8b899e7d8f 100644
--- a/doc/user/io.t
+++ b/doc/user/io.t
@@ -149,6 +149,7 @@ then passed to the correct device driver entry point. RTEMS
will invoke each device driver entry point assuming it is
compatible with the following prototype:
+@ifset is-C
@example
rtems_device_driver io_entry(
rtems_device_major_number major,
@@ -156,8 +157,17 @@ rtems_device_driver io_entry(
void *argument_block
);
@end example
+@end ifset
-
+@ifset is-Ada
+@example
+function IO_Entry (
+ Major : in RTEMS.Device_Major_Number;
+ Minor : in RTEMS.Device_Major_Number;
+ Argument_Block : in RTEMS.Address
+) return RTEMS.Status_Code;
+@end example
+@end ifset
The format and contents of the parameter block are
device driver and entry point dependent.
@@ -263,6 +273,7 @@ status codes.
@subheading CALLING SEQUENCE:
+@ifset is-C
@example
rtems_status_code rtems_io_initialize(
rtems_device_major_number major,
@@ -270,6 +281,19 @@ rtems_status_code rtems_io_initialize(
void *argument
);
@end example
+@end ifset
+
+@ifset is-Ada
+@example
+procedure IO_Initialize (
+ Major : in RTEMS.Device_Major_Number;
+ Minor : in RTEMS.Device_Minor_Number;
+ Argument : in RTEMS.Address;
+ Return_Value : out RTEMS.Unsigned32;
+ Result : out RTEMS.Status_Codes
+);
+@end example
+@end ifset
@subheading DIRECTIVE STATUS CODES:
@code{SUCCESSFUL} - successfully initialized@*
@@ -302,6 +326,7 @@ initialized.
@subheading CALLING SEQUENCE:
+@ifset is-C
@example
rtems_status_code rtems_io_register_name(
char *name,
@@ -309,6 +334,18 @@ rtems_status_code rtems_io_register_name(
rtems_device_minor_number minor
);
@end example
+@end ifset
+
+@ifset is-Ada
+@example
+procedure IO_Register_Name (
+ Name : in String;
+ Major : in RTEMS.Device_Major_Number;
+ Minor : in RTEMS.Device_Minor_Number;
+ Result : out RTEMS.Status_Codes
+);
+@end example
+@end ifset
@subheading DIRECTIVE STATUS CODES:
@code{SUCCESSFUL} - successfully initialized@*
@@ -332,12 +369,23 @@ preempted.
@subheading CALLING SEQUENCE:
+@ifset is-C
@example
-rtems_status_code rtems_io_lookup(
+rtems_status_code rtems_io_lookup_name(
const char *name,
rtems_driver_name_t **device_info
);
@end example
+@end ifset
+
+@ifset is-Ada
+@example
+procedure IO_Lookup_Name (
+ Name : in String;
+ Device_Info : out RTEMS.Driver_Name_t;
+);
+@end example
+@end ifset
@subheading DIRECTIVE STATUS CODES:
@code{SUCCESSFUL} - successfully initialized@*
@@ -361,6 +409,7 @@ preempted.
@subheading CALLING SEQUENCE:
+@ifset is-C
@example
rtems_status_code rtems_io_open(
rtems_device_major_number major,
@@ -368,6 +417,19 @@ rtems_status_code rtems_io_open(
void *argument
);
@end example
+@end ifset
+
+@ifset is-Ada
+@example
+procedure IO_Open (
+ Major : in RTEMS.Device_Major_Number;
+ Minor : in RTEMS.Device_Minor_Number;
+ Argument : in RTEMS.Address;
+ Return_Value : out RTEMS.Unsigned32;
+ Result : out RTEMS.Status_Codes
+);
+@end example
+@end ifset
@subheading DIRECTIVE STATUS CODES:
@code{SUCCESSFUL} - successfully initialized@*
@@ -394,6 +456,7 @@ invoked.
@subheading CALLING SEQUENCE:
+@ifset is-C
@example
rtems_status_code rtems_io_close(
rtems_device_major_number major,
@@ -401,6 +464,19 @@ rtems_status_code rtems_io_close(
void *argument
);
@end example
+@end ifset
+
+@ifset is-Ada
+@example
+procedure IO_Close (
+ Major : in RTEMS.Device_Major_Number;
+ Minor : in RTEMS.Device_Minor_Number;
+ Argument : in RTEMS.Address;
+ Return_Value : out RTEMS.Unsigned32;
+ Result : out RTEMS.Status_Codes
+);
+@end example
+@end ifset
@subheading DIRECTIVE STATUS CODES:
@code{SUCCESSFUL} - successfully initialized@*
@@ -427,6 +503,7 @@ invoked.
@subheading CALLING SEQUENCE:
+@ifset is-C
@example
rtems_status_code rtems_io_read(
rtems_device_major_number major,
@@ -434,6 +511,19 @@ rtems_status_code rtems_io_read(
void *argument
);
@end example
+@end ifset
+
+@ifset is-Ada
+@example
+procedure IO_Read (
+ Major : in RTEMS.Device_Major_Number;
+ Minor : in RTEMS.Device_Minor_Number;
+ Argument : in RTEMS.Address;
+ Return_Value : out RTEMS.Unsigned32;
+ Result : out RTEMS.Status_Codes
+);
+@end example
+@end ifset
@subheading DIRECTIVE STATUS CODES:
@code{SUCCESSFUL} - successfully initialized@*
@@ -461,6 +551,7 @@ invoked.
@subheading CALLING SEQUENCE:
+@ifset is-C
@example
rtems_status_code rtems_io_write(
rtems_device_major_number major,
@@ -468,6 +559,19 @@ rtems_status_code rtems_io_write(
void *argument
);
@end example
+@end ifset
+
+@ifset is-Ada
+@example
+procedure IO_Write (
+ Major : in RTEMS.Device_Major_Number;
+ Minor : in RTEMS.Device_Minor_Number;
+ Argument : in RTEMS.Address;
+ Return_Value : out RTEMS.Unsigned32;
+ Result : out RTEMS.Status_Codes
+);
+@end example
+@end ifset
@subheading DIRECTIVE STATUS CODES:
@code{SUCCESSFUL} - successfully initialized@*
@@ -495,6 +599,7 @@ invoked.
@subheading CALLING SEQUENCE:
+@ifset is-C
@example
rtems_status_code rtems_io_control(
rtems_device_major_number major,
@@ -502,6 +607,19 @@ rtems_status_code rtems_io_control(
void *argument
);
@end example
+@end ifset
+
+@ifset is-Ada
+@example
+procedure IO_Control (
+ Major : in RTEMS.Device_Major_Number;
+ Minor : in RTEMS.Device_Minor_Number;
+ Argument : in RTEMS.Address;
+ Return_Value : out RTEMS.Unsigned32;
+ Result : out RTEMS.Status_Codes
+);
+@end example
+@end ifset
@subheading DIRECTIVE STATUS CODES:
@code{SUCCESSFUL} - successfully initialized@*
diff --git a/doc/user/mp.t b/doc/user/mp.t
index 05a62978c4..9fa3b4d3bb 100644
--- a/doc/user/mp.t
+++ b/doc/user/mp.t
@@ -340,6 +340,7 @@ It is invoked immediately after all of the device drivers have
been initialized. This component should be adhere to the
following prototype:
+@ifset is-C
@example
@group
rtems_mpci_entry user_mpci_initialization(
@@ -347,6 +348,15 @@ rtems_mpci_entry user_mpci_initialization(
);
@end group
@end example
+@end ifset
+
+@ifset is-Ada
+@example
+procedure User_MPCI_Initialization (
+ Configuration : in RTEMS.Configuration_Table_Pointer
+);
+@end example
+@end ifset
where configuration is the address of the user's
Configuration Table. Operations on global objects cannot be
@@ -371,6 +381,7 @@ layer is called when RTEMS must obtain a packet buffer to send
or broadcast a message. This component should be adhere to the
following prototype:
+@ifset is-C
@example
@group
rtems_mpci_entry user_mpci_get_packet(
@@ -378,6 +389,15 @@ rtems_mpci_entry user_mpci_get_packet(
);
@end group
@end example
+@end ifset
+
+@ifset is-Ada
+@example
+procedure User_MPCI_Get_Packet (
+ Packet : access RTEMS.Packet_Prefix_Pointer
+);
+@end example
+@end ifset
where packet is the address of a pointer to a packet.
This routine always succeeds and, upon return, packet will
@@ -401,6 +421,7 @@ layer is called when RTEMS needs to release a packet to the free
packet buffer pool. This component should be adhere to the
following prototype:
+@ifset is-C
@example
@group
rtems_mpci_entry user_mpci_return_packet(
@@ -408,6 +429,15 @@ rtems_mpci_entry user_mpci_return_packet(
);
@end group
@end example
+@end ifset
+
+@ifset is-Ada
+@example
+procedure User_MPCI_Return_Packet (
+ Packet : in RTEMS.Packet_Prefix_Pointer
+);
+@end example
+@end ifset
where packet is the address of a packet. If the
packet cannot be successfully returned, the fatal error manager
@@ -423,6 +453,7 @@ MPCI layer is called when RTEMS needs to obtain a packet which
has previously arrived. This component should be adhere to the
following prototype:
+@ifset is-C
@example
@group
rtems_mpci_entry user_mpci_receive_packet(
@@ -430,6 +461,15 @@ rtems_mpci_entry user_mpci_receive_packet(
);
@end group
@end example
+@end ifset
+
+@ifset is-Ada
+@example
+procedure User_MPCI_Receive_Packet (
+ Packet : access RTEMS.Packet_Prefix_Pointer
+);
+@end example
+@end ifset
where packet is a pointer to the address of a packet
to place the message from another node. If a message is
@@ -447,6 +487,7 @@ layer is called when RTEMS needs to send a packet containing a
message to another node. This component should be adhere to the
following prototype:
+@ifset is-C
@example
@group
rtems_mpci_entry user_mpci_send_packet(
@@ -455,6 +496,16 @@ rtems_mpci_entry user_mpci_send_packet(
);
@end group
@end example
+@end ifset
+
+@ifset is-Ada
+@example
+procedure User_MPCI_Send_Packet (
+ Node : in RTEMS.Unsigned32;
+ Packet : access RTEMS.Packet_Prefix_Pointer
+);
+@end example
+@end ifset
where node is the node number of the destination and packet is the
address of a packet which containing a message. If the packet cannot
@@ -603,9 +654,17 @@ status codes.
@subheading CALLING SEQUENCE:
+@ifset is-C
@example
void rtems_multiprocessing_announce( void );
@end example
+@end ifset
+
+@ifset is-Ada
+@example
+procedure Multiprocessing_Announce;
+@end example
+@end ifset
@subheading DIRECTIVE STATUS CODES:
diff --git a/doc/user/msg.t b/doc/user/msg.t
index 832b69ef2e..1dcd90d59e 100644
--- a/doc/user/msg.t
+++ b/doc/user/msg.t
@@ -293,6 +293,7 @@ constants, usage, and status codes.
@subheading CALLING SEQUENCE:
+@ifset is-C
@example
rtems_status_code rtems_message_queue_create(
rtems_name name,
@@ -302,6 +303,20 @@ rtems_status_code rtems_message_queue_create(
rtems_id *id
);
@end example
+@end ifset
+
+@ifset is-Ada
+@example
+procedure Message_Queue_Create (
+ Name : in RTEMS.Name;
+ Count : in RTEMS.Unsigned32;
+ Max_Message_Size : in RTEMS.Unsigned32;
+ Attribute_Set : in RTEMS.Attribute;
+ ID : out RTEMS.ID;
+ Result : out RTEMS.Status_Codes
+);
+@end example
+@end ifset
@subheading DIRECTIVE STATUS CODES:
@code{SUCCESSFUL} - queue created successfully@*
@@ -366,6 +381,7 @@ configuration table.
@subheading CALLING SEQUENCE:
+@ifset is-C
@example
rtems_status_code rtems_message_queue_ident(
rtems_name name,
@@ -373,6 +389,18 @@ rtems_status_code rtems_message_queue_ident(
rtems_id *id
);
@end example
+@end ifset
+
+@ifset is-Ada
+@example
+procedure Message_Queue_Ident (
+ Name : in RTEMS.Name;
+ Node : in RTEMS.Unsigned32;
+ ID : out RTEMS.ID;
+ Result : out RTEMS.Status_Codes
+);
+@end example
+@end ifset
@subheading DIRECTIVE STATUS CODES:
@code{SUCCESSFUL} - queue identified successfully@*
@@ -413,11 +441,22 @@ table.
@subheading CALLING SEQUENCE:
+@ifset is-C
@example
rtems_status_code rtems_message_queue_delete(
rtems_id id
);
@end example
+@end ifset
+
+@ifset is-Ada
+@example
+procedure Message_Queue_Delete (
+ ID : in RTEMS.ID;
+ Result : out RTEMS.Status_Codes
+);
+@end example
+@end ifset
@subheading DIRECTIVE STATUS CODES:
@code{SUCCESSFUL} - queue deleted successfully@*
@@ -466,6 +505,7 @@ reclaimed when the message queue is deleted.
@subheading CALLING SEQUENCE:
+@ifset is-C
@example
rtems_status_code rtems_message_queue_send(
rtems_id id,
@@ -473,6 +513,18 @@ rtems_status_code rtems_message_queue_send(
rtems_unsigned32 size
);
@end example
+@end ifset
+
+@ifset is-Ada
+@example
+procedure Message_Queue_Send (
+ ID : in RTEMS.ID;
+ Buffer : in RTEMS.Address;
+ Size : in RTEMS.Unsigned32;
+ Result : out RTEMS.Status_Codes
+);
+@end example
+@end ifset
@subheading DIRECTIVE STATUS CODES:
@code{SUCCESSFUL} - message sent successfully@*
@@ -514,6 +566,7 @@ proxy used to represent the task is reclaimed.
@subheading CALLING SEQUENCE:
+@ifset is-C
@example
rtems_status_code rtems_message_queue_urgent(
rtems_id id,
@@ -521,6 +574,18 @@ rtems_status_code rtems_message_queue_urgent(
rtems_unsigned32 size
);
@end example
+@end ifset
+
+@ifset is-Ada
+@example
+procedure Message_Queue_Urgent (
+ ID : in RTEMS.ID;
+ Buffer : in RTEMS.Address;
+ Size : in RTEMS.Unsigned32;
+ Result : out RTEMS.Status_Codes
+);
+@end example
+@end ifset
@subheading DIRECTIVE STATUS CODES:
@code{SUCCESSFUL} - message sent successfully@*
@@ -563,6 +628,7 @@ proxy used to represent the task is reclaimed.
@subheading CALLING SEQUENCE:
+@ifset is-C
@example
rtems_status_code rtems_message_queue_broadcast(
rtems_id id,
@@ -571,6 +637,19 @@ rtems_status_code rtems_message_queue_broadcast(
rtems_unsigned32 *count
);
@end example
+@end ifset
+
+@ifset is-Ada
+@example
+procedure Message_Queue_Broadcast (
+ ID : in RTEMS.ID;
+ Buffer : in RTEMS.Address;
+ Size : in RTEMS.Unsigned32;
+ Count : out RTEMS.Unsigned32;
+ Result : out RTEMS.Status_Codes
+);
+@end example
+@end ifset
@subheading DIRECTIVE STATUS CODES:
@code{SUCCESSFUL} - message broadcasted successfully@*
@@ -615,6 +694,7 @@ proxy used to represent the task is reclaimed.
@subheading CALLING SEQUENCE:
+@ifset is-C
@example
rtems_status_code rtems_message_queue_receive(
rtems_id id,
@@ -624,6 +704,20 @@ rtems_status_code rtems_message_queue_receive(
rtems_interval timeout
);
@end example
+@end ifset
+
+@ifset is-Ada
+@example
+procedure Message_Queue_Receive (
+ ID : in RTEMS.ID;
+ Buffer : in RTEMS.Address;
+ Option_Set : in RTEMS.Option;
+ Timeout : in RTEMS.Interval;
+ Size : out RTEMS.Unsigned32;
+ Result : out RTEMS.Status_Codes
+);
+@end example
+@end ifset
@subheading DIRECTIVE STATUS CODES:
@code{SUCCESSFUL} - message received successfully@*
@@ -686,12 +780,24 @@ message is posted.
@subheading CALLING SEQUENCE:
+@ifset is-C
@example
rtems_status_code rtems_message_queue_flush(
rtems_id id,
rtems_unsigned32 *count
);
@end example
+@end ifset
+
+@ifset is-Ada
+@example
+procedure Message_Queue_Flush (
+ ID : in RTEMS.ID;
+ Count : out RTEMS.Unsigned32;
+ Result : out RTEMS.Status_Codes
+);
+@end example
+@end ifset
@subheading DIRECTIVE STATUS CODES:
@code{SUCCESSFUL} - message received successfully@*
diff --git a/doc/user/overview.t b/doc/user/overview.t
index a1c4d4ef01..85a356ec89 100644
--- a/doc/user/overview.t
+++ b/doc/user/overview.t
@@ -54,7 +54,7 @@ following features:
@end itemize
This manual describes the usage of RTEMS for
-applications written in the C programming language. Those
+applications written in the @value{RTEMS-LANGUAGE} programming language. Those
implementation details that are processor dependent are provided
in the C Applications Supplement documents. A supplement
document which addresses specific architectural issues that
@@ -409,8 +409,9 @@ software developers. Although some background is provided, it
is assumed that the reader is familiar with the concepts of task
management as well as intertask communication and
synchronization. Since directives, user related data
-structures, and examples are presented in C, a basic
-understanding of the C programming language is required to fully
+structures, and examples are presented in @value{RTEMS-LANGUAGE}, a basic
+understanding of the @value{RTEMS-LANGUAGE} programming language
+is required to fully
understand the material presented. However, because of the
similarity of the Ada and C RTEMS implementations, users will
find that the use and behavior of the two implementations is
diff --git a/doc/user/part.t b/doc/user/part.t
index 302f426497..65281d204e 100644
--- a/doc/user/part.t
+++ b/doc/user/part.t
@@ -194,6 +194,7 @@ constants, usage, and status codes.
@subheading CALLING SEQUENCE:
+@ifset is-C
@example
rtems_status_code rtems_partition_create(
rtems_name name,
@@ -204,6 +205,21 @@ rtems_status_code rtems_partition_create(
rtems_id *id
);
@end example
+@end ifset
+
+@ifset is-Ada
+@example
+procedure Partition_Create (
+ Name : in RTEMS.Name;
+ Starting_Address : in RTEMS.Address;
+ Length : in RTEMS.Unsigned32;
+ Buffer_Size : in RTEMS.Unsigned32;
+ Attribute_Set : in RTEMS.Attribute;
+ ID : out RTEMS.ID;
+ Result : out RTEMS.Status_Codes
+);
+@end example
+@end ifset
@subheading DIRECTIVE STATUS CODES:
@code{SUCCESSFUL} - partition created successfully@*
@@ -267,6 +283,7 @@ the Configuration Table.
@subheading CALLING SEQUENCE:
+@ifset is-C
@example
rtems_status_code rtems_partition_ident(
rtems_name name,
@@ -274,6 +291,18 @@ rtems_status_code rtems_partition_ident(
rtems_id *id
);
@end example
+@end ifset
+
+@ifset is-Ada
+@example
+procedure Partition_Ident (
+ Name : in RTEMS.Name;
+ Node : in RTEMS.Unsigned32;
+ ID : out RTEMS.ID;
+ Result : out RTEMS.Status_Codes
+);
+@end example
+@end ifset
@subheading DIRECTIVE STATUS CODES:
@code{SUCCESSFUL} - partition identified successfully@*
@@ -314,11 +343,22 @@ table.
@subheading CALLING SEQUENCE:
+@ifset is-C
@example
rtems_status_code rtems_partition_delete(
rtems_id id
);
@end example
+@end ifset
+
+@ifset is-Ada
+@example
+procedure Partition_Delete (
+ ID : in RTEMS.ID;
+ Result : out RTEMS.Status_Codes
+);
+@end example
+@end ifset
@subheading DIRECTIVE STATUS CODES:
@code{SUCCESSFUL} - partition deleted successfully@*
@@ -357,12 +397,24 @@ the partition was created with the GLOBAL option.
@subheading CALLING SEQUENCE:
+@ifset is-C
@example
rtems_status_code rtems_partition_get_buffer(
rtems_id id,
void **buffer
);
@end example
+@end ifset
+
+@ifset is-Ada
+@example
+procedure Partition_Get_Buffer (
+ ID : in RTEMS.ID;
+ Buffer : out RTEMS.Address;
+ Result : out RTEMS.Status_Codes
+);
+@end example
+@end ifset
@subheading DIRECTIVE STATUS CODES:
@code{SUCCESSFUL} - buffer obtained successfully@*
@@ -396,12 +448,24 @@ remote node to allocate a buffer from the specified partition.
@subheading CALLING SEQUENCE:
+@ifset is-C
@example
rtems_status_code rtems_partition_return_buffer(
rtems_id id,
void *buffer
);
@end example
+@end ifset
+
+@ifset is-Ada
+@example
+procedure Partition_Return_Buffer (
+ ID : in RTEMS.ID;
+ Buffer : in RTEMS.Address;
+ Result : out RTEMS.Status_Codes
+);
+@end example
+@end ifset
@subheading DIRECTIVE STATUS CODES:
@code{SUCCESSFUL} - buffer returned successfully@*
diff --git a/doc/user/preface.texi b/doc/user/preface.texi
index c9154192a6..41cf740053 100644
--- a/doc/user/preface.texi
+++ b/doc/user/preface.texi
@@ -146,12 +146,24 @@ interrupts, time, and multiple processors in addition to those
features typical of generic operating systems. The code is
Government owned, so no licensing fees are necessary. RTEMS has
been implemented in both the Ada and C programming languages.
-It has been ported to the Motorola MC68xxx family, the Intel
-i80386 and above, and the Intel i80960 family. Support for
-other processor families, including RISC, CISC, and DSP, is
-planned. Since almost all of RTEMS is written in a high level
-language, ports to additional processor families require minimal
-effort.
+It has been ported to the following processor families:
+
+@itemize @bullet
+@item Intel i80386 and above
+@item Intel i80960
+@item Motorola MC68xxx
+@item Motorola MC683xx
+@item MIPS
+@item PowerPC
+@item SPARC
+@item Hewlett Packard PA-RISC
+@item AMD A29K
+@item UNIX
+@end itemize
+
+Support for other processor families, including RISC, CISC, and DSP, is
+planned. Since almost all of RTEMS is written in a high level language,
+ports to additional processor families require minimal effort.
RTEMS multiprocessor support is capable of handling
either homogeneous or heterogeneous systems. The kernel
@@ -169,5 +181,6 @@ Once approved, RTEMS will be made compliant.
This document is a detailed users guide for a
functionally compliant real-time multiprocessor executive. It
describes the user interface and run-time behavior of Release
-@value{RTEMS-RELEASE} of the C implementation of RTEMS.
+@value{RTEMS-RELEASE} of the @value{RTEMS-LANGUAGE} interface
+to RTEMS.
diff --git a/doc/user/region.t b/doc/user/region.t
index 22a24cfb95..4d9578723c 100644
--- a/doc/user/region.t
+++ b/doc/user/region.t
@@ -294,6 +294,7 @@ and status codes.
@subheading CALLING SEQUENCE:
+@ifset is-C
@example
rtems_status_code rtems_region_create(
rtems_name name,
@@ -304,6 +305,21 @@ rtems_status_code rtems_region_create(
rtems_id *id
);
@end example
+@end ifset
+
+@ifset is-Ada
+@example
+procedure Region_Create (
+ Name : in RTEMS.Name;
+ Starting_Address : in RTEMS.Address;
+ Length : in RTEMS.Unsigned32;
+ Page_Size : in RTEMS.Unsigned32;
+ Attribute_Set : in RTEMS.Attribute;
+ ID : out RTEMS.ID;
+ Result : out RTEMS.Status_Codes
+);
+@end example
+@end ifset
@subheading DIRECTIVE STATUS CODES:
@@ -359,12 +375,24 @@ by RTEMS:
@subheading CALLING SEQUENCE:
+@ifset is-C
@example
rtems_status_code rtems_region_ident(
rtems_name name,
rtems_id *id
);
@end example
+@end ifset
+
+@ifset is-Ada
+@example
+procedure Region_Ident (
+ Name : in RTEMS.Name;
+ ID : out RTEMS.ID;
+ Result : out RTEMS.Status_Codes
+);
+@end example
+@end ifset
@subheading DIRECTIVE STATUS CODES:
@@ -392,11 +420,22 @@ This directive will not cause the running task to be preempted.
@subheading CALLING SEQUENCE:
+@ifset is-C
@example
rtems_status_code rtems_region_delete(
rtems_id id
);
@end example
+@end ifset
+
+@ifset is-Ada
+@example
+procedure Region_Delete (
+ ID : in RTEMS.ID;
+ Result : out RTEMS.Status_Codes
+);
+@end example
+@end ifset
@subheading DIRECTIVE STATUS CODES:
@@ -427,6 +466,7 @@ delete the region.
@subheading CALLING SEQUENCE:
+@ifset is-C
@example
rtems_status_code rtems_region_extend(
rtems_id id,
@@ -434,6 +474,18 @@ rtems_status_code rtems_region_extend(
rtems_unsigned32 length
);
@end example
+@end ifset
+
+@ifset is-Ada
+@example
+procedure Region_Extend (
+ ID : in RTEMS.ID;
+ Starting_Address : in RTEMS.Address;
+ Length : in RTEMS.Unsigned32;
+ Result : out RTEMS.Status_Codes
+);
+@end example
+@end ifset
@subheading DIRECTIVE STATUS CODES:
@@ -462,6 +514,7 @@ extend the region.
@subheading CALLING SEQUENCE:
+@ifset is-C
@example
rtems_status_code rtems_region_get_segment(
rtems_id id,
@@ -471,6 +524,20 @@ rtems_status_code rtems_region_get_segment(
void **segment
);
@end example
+@end ifset
+
+@ifset is-Ada
+@example
+procedure Region_Get_Segment (
+ ID : in RTEMS.ID;
+ Size : in RTEMS.Unsigned32;
+ Option_Set : in RTEMS.Option;
+ Timeout : in RTEMS.Interval;
+ Segment : out RTEMS.Address;
+ Result : out RTEMS.Status_Codes
+);
+@end example
+@end ifset
@subheading DIRECTIVE STATUS CODES:
@@ -531,12 +598,24 @@ are defined by RTEMS:
@subheading CALLING SEQUENCE:
+@ifset is-C
@example
rtems_status_code rtems_region_return_segment(
rtems_id id,
void *segment
);
@end example
+@end ifset
+
+@ifset is-Ada
+@example
+procedure Region_Return_Segment (
+ ID : in RTEMS.ID;
+ Segment : in RTEMS.Address;
+ Result : out RTEMS.Status_Codes
+);
+@end example
+@end ifset
@subheading DIRECTIVE STATUS CODES:
@@ -575,6 +654,7 @@ is less than or equal to the size of the segment returned.
@subheading CALLING SEQUENCE:
+@ifset is-C
@example
rtems_status_code rtems_region_get_segment_size(
rtems_id id,
@@ -582,6 +662,18 @@ rtems_status_code rtems_region_get_segment_size(
rtems_unsigned32 *size
);
@end example
+@end ifset
+
+@ifset is-Ada
+@example
+procedure Region_Get_Segment_Size (
+ ID : in RTEMS.ID;
+ Segment : in RTEMS.Address;
+ Size : out RTEMS.Unsigned32;
+ Result : out RTEMS.Status_Codes
+);
+@end example
+@end ifset
@subheading DIRECTIVE STATUS CODES:
diff --git a/doc/user/rtmon.t b/doc/user/rtmon.t
index 91fb23b2bf..e11ff63cd8 100644
--- a/doc/user/rtmon.t
+++ b/doc/user/rtmon.t
@@ -936,12 +936,24 @@ constants, usage, and status codes.
@subheading CALLING SEQUENCE:
+@ifset is-C
@example
rtems_status_code rtems_rate_monotonic_create(
rtems_name name,
rtems_id *id
);
@end example
+@end ifset
+
+@ifset is-Ada
+@example
+procedure Rate_Monotonic_Create (
+ Name : in RTEMS.Name;
+ ID : out RTEMS.ID;
+ Result : out RTEMS.Status_Codes
+);
+@end example
+@end ifset
@subheading DIRECTIVE STATUS CODES:
@code{SUCCESSFUL} - rate monotonic period created successfully@*
@@ -970,12 +982,24 @@ preempted.
@subheading CALLING SEQUENCE:
+@ifset is-C
@example
rtems_status_code rtems_rate_monotonic_ident(
rtems_name name,
rtems_id *id
);
@end example
+@end ifset
+
+@ifset is-Ada
+@example
+procedure Rate_Monotonic_Ident (
+ Name : in RTEMS.Name;
+ ID : out RTEMS.ID;
+ Result : out RTEMS.Status_Codes
+);
+@end example
+@end ifset
@subheading DIRECTIVE STATUS CODES:
@code{SUCCESSFUL} - period identified successfully@*
@@ -1003,11 +1027,22 @@ preempted.
@subheading CALLING SEQUENCE:
+@ifset is-C
@example
rtems_status_code rtems_rate_monotonic_cancel(
rtems_id id
);
@end example
+@end ifset
+
+@ifset is-Ada
+@example
+procedure Rate_Monotonic_Cancel (
+ ID : in RTEMS.ID;
+ Result : out RTEMS.Status_Codes
+);
+@end example
+@end ifset
@subheading DIRECTIVE STATUS CODES:
@code{SUCCESSFUL} - period canceled successfully@*
@@ -1036,11 +1071,22 @@ been created by the calling task.
@subheading CALLING SEQUENCE:
+@ifset is-C
@example
rtems_status_code rtems_rate_monotonic_delete(
rtems_id id
);
@end example
+@end ifset
+
+@ifset is-Ada
+@example
+procedure Rate_Monotonic_Delete (
+ ID : in RTEMS.ID;
+ Result : out RTEMS.Status_Codes
+);
+@end example
+@end ifset
@subheading DIRECTIVE STATUS CODES:
@code{SUCCESSFUL} - period deleted successfully@*
@@ -1068,12 +1114,24 @@ other than the task which created the period.
@subheading CALLING SEQUENCE:
+@ifset is-C
@example
rtems_status_code rtems_rate_monotonic_period(
rtems_id id,
rtems_interval length
);
@end example
+@end ifset
+
+@ifset is-Ada
+@example
+procedure Rate_Monotonic_Period (
+ ID : in RTEMS.ID;
+ Length : in RTEMS.Interval;
+ Result : out RTEMS.Status_Codes
+);
+@end example
+@end ifset
@subheading DIRECTIVE STATUS CODES:
@code{SUCCESSFUL} - period initiated successfully@*
@@ -1109,12 +1167,24 @@ This directive will not cause the running task to be preempted.
@subheading CALLING SEQUENCE:
+@ifset is-C
@example
-rtems_status_code rtems_rate_monotonic_period(
+rtems_status_code rtems_rate_monotonic_get_status(
rtems_id id,
rtems_rate_monotonic_period_status *status
);
@end example
+@end ifset
+
+@ifset is-Ada
+@example
+procedure Rate_Monotonic_Get_Status (
+ ID : in RTEMS.ID;
+ Status : out RTEMS.Rate_Monotonic_Period_Status;
+ Result : out RTEMS.Status_Codes
+);
+@end example
+@end ifset
@subheading DIRECTIVE STATUS CODES:
@code{SUCCESSFUL} - period initiated successfully@*
@@ -1126,6 +1196,7 @@ rtems_status_code rtems_rate_monotonic_period(
This directive returns status information associated with
the rate monotonic period id in the following data structure:
+@ifset is-C
@example
typedef struct @{
rtems_rate_monotonic_period_states state;
@@ -1133,6 +1204,18 @@ typedef struct @{
unsigned32 ticks_executed_since_last_period;
@} rtems_rate_monotonic_period_status;
@end example
+@end ifset
+
+@ifset is-Ada
+@example
+type Rate_Monotonic_Period_Status is
+ begin
+ State : RTEMS.Rate_Monotonic_Period_States;
+ Ticks_Since_Last_Period : RTEMS.Unsigned32;
+ Ticks_Executed_Since_Last_Period : RTEMS.Unsigned32;
+ end record;
+@end example
+@end ifset
If the period's state is RATE_MONOTONIC_INACTIVE, both
ticks_since_last_period and ticks_executed_since_last_period
diff --git a/doc/user/sem.t b/doc/user/sem.t
index 2e45af686c..256781978a 100644
--- a/doc/user/sem.t
+++ b/doc/user/sem.t
@@ -426,6 +426,7 @@ constants, usage, and status codes.
@subheading CALLING SEQUENCE:
+@ifset is-C
@example
rtems_status_code rtems_semaphore_create(
rtems_name name,
@@ -435,6 +436,19 @@ rtems_status_code rtems_semaphore_create(
rtems_id *id
);
@end example
+@end ifset
+
+@ifset is-Ada
+@example
+procedure Semaphore_Create (
+ Name : in RTEMS.Name;
+ Count : in RTEMS.Unsigned32;
+ Attribute_Set : in RTEMS.Attribute;
+ ID : out RTEMS.ID;
+ Result : out RTEMS.Status_Codes
+);
+@end example
+@end ifset
@subheading DIRECTIVE STATUS CODES:
@code{SUCCESSFUL} - semaphore created successfully@*
@@ -506,6 +520,7 @@ the Configuration Table.
@subheading CALLING SEQUENCE:
+@ifset is-C
@example
rtems_status_code rtems_semaphore_ident(
rtems_name name,
@@ -513,6 +528,18 @@ rtems_status_code rtems_semaphore_ident(
rtems_id *id
);
@end example
+@end ifset
+
+@ifset is-Ada
+@example
+procedure Semaphore_Ident (
+ Name : in RTEMS.Name;
+ Node : in RTEMS.Unsigned32;
+ ID : out RTEMS.ID;
+ Result : out RTEMS.Status_Codes
+);
+@end example
+@end ifset
@subheading DIRECTIVE STATUS CODES:
@code{SUCCESSFUL} - semaphore identified successfully@*
@@ -553,11 +580,22 @@ table.
@subheading CALLING SEQUENCE:
+@ifset is-C
@example
rtems_status_code rtems_semaphore_delete(
rtems_id id
);
@end example
+@end ifset
+
+@ifset is-Ada
+@example
+procedure Semaphore_Delete (
+ ID : in RTEMS.ID;
+ Result : out RTEMS.Status_Codes
+);
+@end example
+@end ifset
@subheading DIRECTIVE STATUS CODES:
@code{SUCCESSFUL} - semaphore deleted successfully@*
@@ -603,6 +641,7 @@ reclaimed when the semaphore is deleted.
@subheading CALLING SEQUENCE:
+@ifset is-C
@example
rtems_status_code rtems_semaphore_obtain(
rtems_id id,
@@ -610,6 +649,18 @@ rtems_status_code rtems_semaphore_obtain(
rtems_interval timeout
);
@end example
+@end ifset
+
+@ifset is-Ada
+@example
+procedure Semaphore_Obtain (
+ ID : in RTEMS.ID;
+ Option_Set : in RTEMS.Option;
+ Timeout : in RTEMS.Interval;
+ Result : out RTEMS.Status_Codes
+);
+@end example
+@end ifset
@subheading DIRECTIVE STATUS CODES:
@code{SUCCESSFUL} - semaphore obtained successfully@*
@@ -679,11 +730,22 @@ node to represent the task until the semaphore is released.
@subheading CALLING SEQUENCE:
+@ifset is-C
@example
rtems_status_code rtems_semaphore_release(
rtems_id id
);
@end example
+@end ifset
+
+@ifset is-Ada
+@example
+procedure Semaphore_Release (
+ ID : in RTEMS.ID;
+ Result : out RTEMS.Status_Codes
+);
+@end example
+@end ifset
@subheading DIRECTIVE STATUS CODES:
@code{SUCCESSFUL} - semaphore released successfully@*
diff --git a/doc/user/signal.t b/doc/user/signal.t
index f6a53c1967..394ffc6032 100644
--- a/doc/user/signal.t
+++ b/doc/user/signal.t
@@ -231,13 +231,23 @@ software interrupts parallels that of hardware interrupts. As a
result, the differences between the formats of ASRs and ISRs is
limited to the meaning of the single argument passed to an ASR.
The ASR should have the following calling sequence and adhere to
-C calling conventions:
+@value{RTEMS-LANGUAGE} calling conventions:
+@ifset is-C
@example
rtems_asr user_routine(
rtems_signal_set signals
);
@end example
+@end ifset
+
+@ifset is-Ada
+@example
+procedure User_Routine (
+ Signals : in RTEMS.Signal_Set
+);
+@end example
+@end ifset
When the ASR returns to RTEMS the mode and execution
path of the interrupted task (or ASR) is restored to the context
@@ -267,12 +277,24 @@ and status codes.
@subheading CALLING SEQUENCE:
+@ifset is-C
@example
rtems_status_code rtems_signal_catch(
rtems_asr_entry asr_handler,
rtems_mode mode
);
@end example
+@end ifset
+
+@ifset is-Ada
+@example
+procedure Signal_Catch (
+ ASR_Handler : in RTEMS.ASR_Handler;
+ Mode_Set : in RTEMS.Mode;
+ Result : out RTEMS.Status_Codes
+);
+@end example
+@end ifset
@subheading DIRECTIVE STATUS CODES:
@code{SUCCESSFUL} - always successful
@@ -314,12 +336,24 @@ The following task mode constants are defined by RTEMS:
@subheading CALLING SEQUENCE:
+@ifset is-C
@example
rtems_status_code rtems_signal_send(
rtems_id id,
rtems_signal_set signal_set
);
@end example
+@end ifset
+
+@ifset is-Ada
+@example
+procedure Signal_Send (
+ ID : in RTEMS.ID;
+ Signal_Set : in RTEMS.Signal_Set;
+ Result : out RTEMS.Status_Codes
+);
+@end example
+@end ifset
@subheading DIRECTIVE STATUS CODES:
@code{SUCCESSFUL} - signal sent successfully@*
diff --git a/doc/user/task.t b/doc/user/task.t
index 730bb73ad2..0d623141d9 100644
--- a/doc/user/task.t
+++ b/doc/user/task.t
@@ -254,11 +254,21 @@ commonly used to communicate startup information to the task.
The simplest manner in which to define a task which accesses it
argument is:
+@ifset is-C
@example
rtems_task user_task(
rtems_task_argument argument
);
@end example
+@end ifset
+
+@ifset is-Ada
+@example
+procedure User_Task (
+ Argument : in RTEMS.Task_Argument_Ptr
+);
+@end example
+@end ifset
Application tasks requiring more information may view this
single argument as an index into an array of parameter blocks.
@@ -672,6 +682,8 @@ status codes.
@subsection TASK_CREATE - Create a task
@subheading CALLING SEQUENCE:
+
+@ifset is-C
@example
rtems_status_code rtems_task_create(
rtems_name name,
@@ -682,6 +694,21 @@ rtems_status_code rtems_task_create(
rtems_id *id
);
@end example
+@end ifset
+
+@ifset is-Ada
+@example
+procedure Task_Create (
+ Name : in RTEMS.Name;
+ Initial_Priority : in RTEMS.Task_Priority;
+ Stack_Size : in RTEMS.Unsigned32;
+ Initial_Modes : in RTEMS.Mode;
+ Attribute_Set : in RTEMS.Attribute;
+ ID : out RTEMS.ID;
+ Result : out RTEMS.Status_Codes
+);
+@end example
+@end ifset
@subheading DIRECTIVE STATUS CODES:
@code{SUCCESSFUL} - task created successfully@*
@@ -763,6 +790,8 @@ by the maximum_global_objects field in the Configuration Table.
@subsection TASK_IDENT - Get ID of a task
@subheading CALLING SEQUENCE:
+
+@ifset is-C
@example
rtems_status_code rtems_task_ident(
rtems_name name,
@@ -770,6 +799,18 @@ rtems_status_code rtems_task_ident(
rtems_id *id
);
@end example
+@end ifset
+
+@ifset is-Ada
+@example
+procedure Task_Ident (
+ Name : in RTEMS.Name;
+ Node : in RTEMS.Node;
+ ID : out RTEMS.ID;
+ Result : out RTEMS.Status_Codes
+);
+@end example
+@end ifset
@subheading DIRECTIVE STATUS CODES:
@code{SUCCESSFUL} - task identified successfully@*
@@ -807,6 +848,7 @@ accesses only the local copy of the global object table.
@subsection TASK_START - Start a task
@subheading CALLING SEQUENCE:
+@ifset is-C
@example
rtems_status_code rtems_task_start(
rtems_id id,
@@ -814,6 +856,18 @@ rtems_status_code rtems_task_start(
rtems_task_argument argument
);
@end example
+@end ifset
+
+@ifset is-Ada
+@example
+procedure Task_Start (
+ ID : in RTEMS.ID;
+ Entry_Point : in System.Address;
+ Argument : in RTEMS.Task_Argument_PTR;
+ Result : out RTEMS.Status_Codes
+);
+@end example
+@end ifset
@subheading DIRECTIVE STATUS CODES:
@code{SUCCESSFUL} - ask started successfully@*
@@ -846,12 +900,24 @@ the task_start directive.
@subsection TASK_RESTART - Restart a task
@subheading CALLING SEQUENCE:
+@ifset is-C
@example
rtems_status_code rtems_task_restart(
rtems_id id,
rtems_task_argument argument
);
@end example
+@end ifset
+
+@ifset is-Ada
+@example
+procedure Task_Restart (
+ ID : in RTEMS.ID;
+ Argument : in RTEMS.Task_Argument_PTR;
+ Result : out RTEMS.Status_Codes
+);
+@end example
+@end ifset
@subheading DIRECTIVE STATUS CODES:
@code{SUCCESSFUL} - task restarted successfully@*
@@ -895,11 +961,22 @@ created with the GLOBAL option.
@subsection TASK_DELETE - Delete a task
@subheading CALLING SEQUENCE:
+@ifset is-C
@example
rtems_status_code rtems_task_delete(
rtems_id id
);
@end example
+@end ifset
+
+@ifset is-Ada
+@example
+procedure Task_Delete (
+ ID : in RTEMS.ID;
+ Result : out RTEMS.Status_Codes
+);
+@end example
+@end ifset
@subheading DIRECTIVE STATUS CODES:
@code{SUCCESSFUL} - task restarted successfully@*
@@ -943,11 +1020,22 @@ created with the GLOBAL option.
@subsection TASK_SUSPEND - Suspend a task
@subheading CALLING SEQUENCE:
+@ifset is-C
@example
rtems_status_code rtems_task_suspend(
rtems_id id
);
@end example
+@end ifset
+
+@ifset is-Ada
+@example
+procedure Task_Suspend (
+ ID : in RTEMS.ID;
+ Result : out RTEMS.Status_Codes
+);
+@end example
+@end ifset
@subheading DIRECTIVE STATUS CODES:
@code{SUCCESSFUL} - task restarted successfully@*
@@ -979,11 +1067,22 @@ specified task.
@subsection TASK_RESUME - Resume a task
@subheading CALLING SEQUENCE:
+@ifset is-C
@example
rtems_status_code rtems_task_resume(
rtems_id id
);
@end example
+@end ifset
+
+@ifset is-Ada
+@example
+procedure Task_Resume (
+ ID : in RTEMS.ID;
+ Result : out RTEMS.Status_Codes
+);
+@end example
+@end ifset
@subheading DIRECTIVE STATUS CODES:
@code{SUCCESSFUL} - task restarted successfully@*
@@ -1013,6 +1112,7 @@ specified task.
@subsection TASK_SET_PRIORITY - Set task priority
@subheading CALLING SEQUENCE:
+@ifset is-C
@example
rtems_status_code rtems_task_set_priority(
rtems_id id,
@@ -1020,6 +1120,18 @@ rtems_status_code rtems_task_set_priority(
rtems_task_priority *old_priority
);
@end example
+@end ifset
+
+@ifset is-Ada
+@example
+procedure Task_Set_Priority (
+ ID : in RTEMS.ID;
+ New_Priority : in RTEMS.Task_Priority;
+ Old_Priority : out RTEMS.Task_Priority;
+ Result : out RTEMS.Status_Codes
+);
+@end example
+@end ifset
@subheading DIRECTIVE STATUS CODES:
@code{SUCCESSFUL} - task priority set successfully@*
@@ -1062,6 +1174,7 @@ binary semaphores.
@subsection TASK_MODE - Change current task's mode
@subheading CALLING SEQUENCE:
+@ifset is-C
@example
rtems_status_code rtems_task_mode(
rtems_mode mode_set,
@@ -1069,6 +1182,18 @@ rtems_status_code rtems_task_mode(
rtems_mode *previous_mode_set
);
@end example
+@end ifset
+
+@ifset is-Ada
+@example
+procedure Task_Delete (
+ Mode_Set : in RTEMS.Mode;
+ Mask : in RTEMS.Mode;
+ Previous_Mode_Set : in RTEMS.Mode;
+ Result : out RTEMS.Status_Codes
+);
+@end example
+@end ifset
@subheading DIRECTIVE STATUS CODES:
@code{SUCCESSFUL} - task mode set successfully
@@ -1175,6 +1300,7 @@ mask constant is provided in the following table:
@subsection TASK_GET_NOTE - Get task notepad entry
@subheading CALLING SEQUENCE:
+@ifset is-C
@example
rtems_status_code rtems_task_get_note(
rtems_id id,
@@ -1182,6 +1308,18 @@ rtems_status_code rtems_task_get_note(
rtems_unsigned32 *note
);
@end example
+@end ifset
+
+@ifset is-Ada
+@example
+procedure Task_Get_Note (
+ ID : in RTEMS.ID;
+ Notepad : in RTEMS.Notepad_Index;
+ Note : out RTEMS.Unsigned32;
+ Result : out RTEMS.Status_Codes
+);
+@end example
+@end ifset
@subheading DIRECTIVE STATUS CODES:
@code{SUCCESSFUL} - note obtained successfully@*
@@ -1216,6 +1354,7 @@ the notepad entry of the specified task.
@subsection TASK_SET_NOTE - Set task notepad entry
@subheading CALLING SEQUENCE:
+@ifset is-C
@example
rtems_status_code rtems_task_set_note(
rtems_id id,
@@ -1223,6 +1362,18 @@ rtems_status_code rtems_task_set_note(
rtems_unsigned32 note
);
@end example
+@end ifset
+
+@ifset is-Ada
+@example
+procedure Task_Set_Note (
+ ID : in RTEMS.ID;
+ Notepad : in RTEMS.Notepad_Index;
+ Note : in RTEMS.Unsigned32;
+ Result : out RTEMS.Status_Codes
+);
+@end example
+@end ifset
@subheading DIRECTIVE STATUS CODES:
@code{SUCCESSFUL} - task's note set successfully@*
@@ -1258,11 +1409,22 @@ node to set the specified notepad entry.
@subsection TASK_WAKE_AFTER - Wake up after interval
@subheading CALLING SEQUENCE:
+@ifset is-C
@example
rtems_status_code rtems_task_wake_after(
rtems_interval ticks
);
@end example
+@end ifset
+
+@ifset is-Ada
+@example
+procedure Task_Wake_After (
+ Ticks : in RTEMS.Interval;
+ Result : out RTEMS.Status_Codes
+);
+@end example
+@end ifset
@subheading DIRECTIVE STATUS CODES:
@code{SUCCESSFUL} - always successful
@@ -1292,11 +1454,22 @@ value which can be represented by the rtems_unsigned32 type.
@subheading CALLING SEQUENCE:
+@ifset is-C
@example
rtems_status_code rtems_task_wake_when(
rtems_time_of_day *time_buffer
);
@end example
+@end ifset
+
+@ifset is-Ada
+@example
+procedure Task_Wake_When (
+ Time_Buffer : in RTEMS.Time_Of_Day;
+ Result : out RTEMS.Status_Codes
+);
+@end example
+@end ifset
@subheading DIRECTIVE STATUS CODES:
@code{SUCCESSFUL} - awakened at date/time successfully@*
diff --git a/doc/user/timer.t b/doc/user/timer.t
index d0dcb8ba71..515736e740 100644
--- a/doc/user/timer.t
+++ b/doc/user/timer.t
@@ -74,17 +74,26 @@ sometimes referred to as a "keep alive" or a "deadman" timer.
@end ifinfo
@subsection Timer Service Routines
-The timer service routine should adhere to C calling
+The timer service routine should adhere to @value{RTEMS-LANGUAGE} calling
conventions and have a prototype similar to the following::
+@ifset is-C
@example
rtems_timer_service_routine user_routine(
rtems_id timer_id,
void *user_data
);
@end example
+@end ifset
-
+@ifset is-Ada
+@example
+procedure User_Routine(
+ Timer_ID : in RTEMS.ID;
+ User_Data : in System.Address
+);
+@end example
+@end ifset
Where the timer_id parameter is the RTEMS object ID
of the timer which is being fired and user_data is a pointer to
@@ -216,12 +225,24 @@ and status codes.
@subheading CALLING SEQUENCE:
+@ifset is-C
@example
rtems_status_code rtems_timer_create(
rtems_name name,
rtems_id *id
);
@end example
+@end ifset
+
+@ifset is-Ada
+@example
+procedure Timer_Create (
+ Name : in RTEMS.Name;
+ ID : out RTEMS.ID;
+ Result : out RTEMS.Status_Codes
+);
+@end example
+@end ifset
@subheading DIRECTIVE STATUS CODES:
@code{SUCCESSFUL} - timer created successfully@*
@@ -249,12 +270,24 @@ preempted.
@subheading CALLING SEQUENCE:
+@ifset is-C
@example
rtems_status_code rtems_timer_ident(
rtems_name name,
rtems_id *id
);
@end example
+@end ifset
+
+@ifset is-Ada
+@example
+procedure Timer_Ident (
+ Name : in RTEMS.Name;
+ ID : out RTEMS.ID;
+ Result : out RTEMS.Status_Codes
+);
+@end example
+@end ifset
@subheading DIRECTIVE STATUS CODES:
@code{SUCCESSFUL} - timer identified successfully@*
@@ -282,11 +315,22 @@ preempted.
@subheading CALLING SEQUENCE:
+@ifset is-C
@example
rtems_status_code rtems_timer_cancel(
rtems_id id
);
@end example
+@end ifset
+
+@ifset is-Ada
+@example
+procedure Timer_Cancel (
+ ID : in RTEMS.ID;
+ Result : out RTEMS.Status_Codes
+);
+@end example
+@end ifset
@subheading DIRECTIVE STATUS CODES:
@code{SUCCESSFUL} - timer canceled successfully@*
@@ -310,11 +354,22 @@ This directive will not cause the running task to be preempted.
@subheading CALLING SEQUENCE:
+@ifset is-C
@example
rtems_status_code rtems_timer_delete(
rtems_id id
);
@end example
+@end ifset
+
+@ifset is-Ada
+@example
+procedure Timer_Delete (
+ ID : in RTEMS.ID;
+ Result : out RTEMS.Status_Codes
+);
+@end example
+@end ifset
@subheading DIRECTIVE STATUS CODES:
@code{SUCCESSFUL} - timer deleted successfully@*
@@ -342,6 +397,7 @@ which created the timer.
@subheading CALLING SEQUENCE:
+@ifset is-C
@example
rtems_status_code rtems_timer_fire_after(
rtems_id id,
@@ -350,6 +406,19 @@ rtems_status_code rtems_timer_fire_after(
void *user_data
);
@end example
+@end ifset
+
+@ifset is-Ada
+@example
+procedure Timer_Fire_After (
+ ID : in RTEMS.ID;
+ Ticks : in RTEMS.Interval;
+ Routine : in RTEMS.Timer_Service_Routine;
+ User_Data : in RTEMS.Address;
+ Result : out RTEMS.Status_Codes
+);
+@end example
+@end ifset
@subheading DIRECTIVE STATUS CODES:
@code{SUCCESSFUL} - timer initiated successfully@*
@@ -378,6 +447,7 @@ preempted.
@subheading CALLING SEQUENCE:
+@ifset is-C
@example
rtems_status_code rtems_timer_fire_when(
rtems_id id,
@@ -386,6 +456,19 @@ rtems_status_code rtems_timer_fire_when(
void *user_data
);
@end example
+@end ifset
+
+@ifset is-Ada
+@example
+procedure Timer_Fire_When (
+ ID : in RTEMS.ID;
+ Wall_Time : in RTEMS.Time_Of_Day;
+ Routine : in RTEMS.Timer_Service_Routine;
+ User_Data : in RTEMS.Address;
+ Result : out RTEMS.Status_Codes
+);
+@end example
+@end ifset
@subheading DIRECTIVE STATUS CODES:
@code{SUCCESSFUL} - timer initiated successfully@*
@@ -415,11 +498,22 @@ preempted.
@subheading CALLING SEQUENCE:
+@ifset is-C
@example
rtems_status_code rtems_timer_reset(
rtems_id id
);
@end example
+@end ifset
+
+@ifset is-Ada
+@example
+procedure Timer_Reset (
+ ID : in RTEMS.ID;
+ Result : out RTEMS.Status_Codes
+);
+@end example
+@end ifset
@subheading DIRECTIVE STATUS CODES:
@code{SUCCESSFUL} - timer reset successfully@*
diff --git a/doc/user/userext.t b/doc/user/userext.t
index 8166aa1a0e..8c6a319bee 100644
--- a/doc/user/userext.t
+++ b/doc/user/userext.t
@@ -87,21 +87,40 @@ performance monitoring or debugger support. RTEMS is informed of
the entry points which constitute an extension set via the
following structure:
+@ifset is-C
@example
@group
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_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;
+ User_extensions_thread_begin_extension thread_begin;
+ User_extensions_thread_exitted_extension thread_exitted;
+ User_extensions_fatal_error_extension fatal;
@} User_extensions_Table;
@end group
@end example
+@end ifset
+
+@ifset is-Ada
+@example
+type Extensions_Table is
+ record
+ Task_Create : RTEMS.Task_Create_Extension;
+ Task_Start : RTEMS.Task_Start_Extension;
+ Task_Restart : RTEMS.Task_Restart_Extension;
+ Task_Delete : RTEMS.Task_Delete_Extension;
+ Task_Switch : RTEMS.Task_Switch_Extension;
+ Task_Post_Switch : RTEMS.Task_Post_Switch_Extension;
+ Task_Begin : RTEMS.Task_Begin_Extension;
+ Task_Exitted : RTEMS.Task_Exitted_Extension;
+ Fatal : RTEMS.Fatal_Error_Extension;
+ end record;
+@end example
+@end ifset
RTEMS allows the user to have multiple extension sets
@@ -179,7 +198,8 @@ directives to obtain and release the extension buffers.
The sections that follow will contain a description
of each extension. Each section will contain a prototype of a
function with the appropriate calling sequence for the
-corresponding extension. The names given for the C function and
+corresponding extension. The names given for the @value{RTEMS-LANGUAGE}
+@value{RTEMS-ROUTINE} and
its arguments are all defined by the user. The names used in
the examples were arbitrarily chosen and impose no naming
conventions on the user.
@@ -196,12 +216,23 @@ then the extension routine will automatically be invoked by
RTEMS. The extension should have a prototype similar to the
following:
+@ifset is-C
@example
rtems_extension user_task_create(
rtems_tcb *current_task,
rtems_tcb *new_task
);
@end example
+@end ifset
+
+@ifset is-Ada
+@example
+procedure User_Task_Create (
+ Current_Task : in RTEMS.TCB_Pointer;
+ New_Task : in RTEMS.TCB_Pointer
+);
+@end example
+@end ifset
where current_task can be used to access the TCB for
the currently executing task, and new_task can be used to access
@@ -222,12 +253,23 @@ then the extension routine will automatically be invoked by
RTEMS. The extension should have a prototype similar to the
following:
+@ifset is-C
@example
rtems_extension user_task_start(
rtems_tcb *current_task,
rtems_tcb *started_task
);
@end example
+@end ifset
+
+@ifset is-Ada
+@example
+procedure User_Task_Start (
+ Current_Task : in RTEMS.TCB_Pointer;
+ Started_Task : in RTEMS.TCB_Pointer
+);
+@end example
+@end ifset
where current_task can be used to access the TCB for
the currently executing task, and started_task can be used to
@@ -247,12 +289,23 @@ static or dynamic extension set and a task is being restarted,
then the extension should have a prototype similar to the
following:
+@ifset is-C
@example
rtems_extension user_task_restart(
rtems_tcb *current_task,
rtems_tcb *restarted_task
);
@end example
+@end ifset
+
+@ifset is-Ada
+@example
+procedure User_Task_Restart (
+ Current_Task : in RTEMS.TCB_Pointer;
+ Restarted_Task : in RTEMS.TCB_Pointer
+);
+@end example
+@end ifset
where current_task can be used to access the TCB for
the currently executing task, and restarted_task can be used to
@@ -273,12 +326,23 @@ then the extension routine will automatically be invoked by
RTEMS. The extension should have a prototype similar to the
following:
+@ifset is-C
@example
rtems_extension user_task_delete(
rtems_tcb *current_task,
rtems_tcb *deleted_task
);
@end example
+@end ifset
+
+@ifset is-Ada
+@example
+procedure User_Task_Delete (
+ Current_Task : in RTEMS.TCB_Pointer;
+ Deleted_Task : in RTEMS.TCB_Pointer
+);
+@end example
+@end ifset
where current_task can be used to access the TCB for
the currently executing task, and deleted_task can be used to
@@ -301,12 +365,23 @@ then the extension routine will automatically be invoked by
RTEMS. The extension should have a prototype similar to the
following:
+@ifset is-C
@example
rtems_extension user_task_switch(
rtems_tcb *current_task,
rtems_tcb *heir_task
);
@end example
+@end ifset
+
+@ifset is-Ada
+@example
+procedure User_Task_Switch (
+ Current_Task : in RTEMS.TCB_Pointer;
+ Heir_Task : in RTEMS.TCB_Pointer
+);
+@end example
+@end ifset
where current_task can be used to access the TCB for
the task that is being swapped out, and heir_task can be used to
@@ -328,11 +403,21 @@ completed, then the extension routine will automatically be
invoked by RTEMS. The extension should have a prototype similar
to the following:
+@ifset is-C
@example
rtems_extension user_task_post_switch(
rtems_tcb *current_task
);
@end example
+@end ifset
+
+@ifset is-Ada
+@example
+procedure User_Task_Post_Switch (
+ Current_Task : in RTEMS.TCB_Pointer
+);
+@end example
+@end ifset
where current_task can be used to access the TCB for
the task that is being swapped out, and heir_task can be used to
@@ -351,11 +436,21 @@ begins execution. It is invoked immediately before the body of
the starting procedure and executes in the context in the task.
This user extension have a prototype similar to the following:
+@ifset is-C
@example
rtems_extension user_task_begin(
rtems_tcb *current_task
);
@end example
+@end ifset
+
+@ifset is-Ada
+@example
+procedure User_Task_Begin (
+ Current_Task : in RTEMS.TCB_Pointer
+);
+@end example
+@end ifset
where current_task can be used to access the TCB for
the currently executing task which has begun. The distinction
@@ -375,11 +470,21 @@ exits the body of the starting procedure by either an implicit
or explicit return statement. This user extension have a
prototype similar to the following:
+@ifset is-C
@example
rtems_extension user_task_exitted(
rtems_tcb *current_task
);
@end example
+@end ifset
+
+@ifset is-Ada
+@example
+procedure User_Task_Exitted (
+ Current_Task : in RTEMS.TCB_Pointer
+);
+@end example
+@end ifset
where current_task can be used to access the TCB for
the currently executing task which has just exitted.
@@ -406,13 +511,23 @@ any static or dynamic extension set and the fatal_error_occurred
directive has been invoked, then this extension will be called.
This extension should have a prototype similar to the following:
+@ifset is-C
@example
-rtems_extension user_fatal_error_extension(
+rtems_extension user_fatal_error(
Internal_errors_Source the_source,
rtems_boolean is_internal,
rtems_unsigned32 the_error
);
@end example
+@end ifset
+
+@ifset is-Ada
+@example
+procedure User_Fatal_Error (
+ Error : in RTEMS.Unsigned32
+);
+@end example
+@end ifset
where the_error is the error code passed to the
fatal_error_occurred directive. This extension is invoked from
@@ -549,6 +664,7 @@ constants, usage, and status codes.
@subheading CALLING SEQUENCE:
+@ifset is-C
@example
rtems_status_code rtems_extension_create(
rtems_name name,
@@ -556,6 +672,18 @@ rtems_status_code rtems_extension_create(
rtems_id *id
);
@end example
+@end ifset
+
+@ifset is-Ada
+@example
+procedure Extension_Create (
+ Name : in RTEMS.Name;
+ Table : in RTEMS.Extensions_Table_Pointer;
+ ID : out RTEMS.ID;
+ Result : out RTEMS.Status_Codes
+);
+@end example
+@end ifset
@subheading DIRECTIVE STATUS CODES:
@code{SUCCESSFUL} - extension set created successfully@*
@@ -584,12 +712,24 @@ preempted.
@subheading CALLING SEQUENCE:
+@ifset is-C
@example
rtems_status_code rtems_extension_ident(
rtems_name name,
rtems_id *id
);
@end example
+@end ifset
+
+@ifset is-Ada
+@example
+procedure Extension_Ident (
+ Name : in RTEMS.Name;
+ ID : out RTEMS.ID;
+ Result : out RTEMS.Status_Codes
+);
+@end example
+@end ifset
@subheading DIRECTIVE STATUS CODES:
@code{SUCCESSFUL} - extension set identified successfully@*
@@ -618,11 +758,22 @@ preempted.
@subheading CALLING SEQUENCE:
+@ifset is-C
@example
rtems_status_code rtems_extension_delete(
rtems_id id
);
@end example
+@end ifset
+
+@ifset is-Ada
+@example
+procedure Extension_Delete (
+ ID : in RTEMS.ID;
+ Result : out RTEMS.Status_Codes
+);
+@end example
+@end ifset
@subheading DIRECTIVE STATUS CODES:
@code{SUCCESSFUL} - extension set deleted successfully@*