mirror of
https://gitlab.rtems.org/rtems/rtos/rtems.git
synced 2026-08-21 14:51:32 +08:00
first cut at Ada bindings manual
This commit is contained in:
@@ -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
|
||||
|
||||
+62
-1
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
+9
-6
@@ -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 @{
|
||||
|
||||
+64
-4
@@ -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.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -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@*
|
||||
|
||||
+10
-2
@@ -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
|
||||
|
||||
|
||||
+44
-1
@@ -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:
|
||||
|
||||
|
||||
+26
-4
@@ -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@*
|
||||
|
||||
+120
-2
@@ -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@*
|
||||
|
||||
@@ -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:
|
||||
|
||||
|
||||
+106
@@ -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@*
|
||||
|
||||
+4
-3
@@ -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
|
||||
|
||||
@@ -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@*
|
||||
|
||||
+20
-7
@@ -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.
|
||||
|
||||
|
||||
@@ -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:
|
||||
|
||||
|
||||
+84
-1
@@ -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
|
||||
|
||||
@@ -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@*
|
||||
|
||||
+35
-1
@@ -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@*
|
||||
|
||||
+173
@@ -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@*
|
||||
|
||||
+96
-2
@@ -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@*
|
||||
|
||||
+161
-10
@@ -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@*
|
||||
|
||||
Reference in New Issue
Block a user