first cut at Ada bindings manual

This commit is contained in:
Joel Sherrill committed 1997-05-29 21:53:58 +00:00
1 parent 1ca853b288
commit 61389eac9f
22 files changed
+1322 -46

No files matched your search

+5 -1
View File
@@ -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
View File
@@ -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
-1
View File
@@ -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
View File
@@ -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
View File
@@ -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.
+26
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
File diff suppressed because it is too large. Load diff
+59
View File
@@ -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
View File
File diff suppressed because it is too large. Load diff
+4 -3
View File
@@ -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
+64
View File
@@ -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
View File
@@ -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.
+92
View File
@@ -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
View File
@@ -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
+62
View File
@@ -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
View File
@@ -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
View File
File diff suppressed because it is too large. Load diff
+96 -2
View File
@@ -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
View File
File diff suppressed because it is too large. Load diff