mirror of
https://gitlab.rtems.org/rtems/rtos/rtems.git
synced 2026-11-09 08:37:58 +08:00
first cut at Ada bindings manual
This commit is contained in:
1 parent
1ca853b288
commit
61389eac9f
22 files changed
+1322
-46
No files matched your search
@@ -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
File diff suppressed because it is too large.
Load diff
@@ -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
File diff suppressed because it is too large.
Load diff
+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
File diff suppressed because it is too large.
Load diff
+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
File diff suppressed because it is too large.
Load diff
Reference in new issue
Block a user