mirror of
https://gitlab.rtems.org/rtems/rtos/rtems.git
synced 2025-12-07 16:13:07 +00:00
* rtems.ads, rtems.adb: Formatting cleaned up. Task based timer directives added. This is Timer_Initiate_Server, Timer_Server_Fire_After, and Timer_Server_Fire_When.
1453 lines
44 KiB
Ada
1453 lines
44 KiB
Ada
--
|
|
-- RTEMS / Specification
|
|
--
|
|
-- DESCRIPTION:
|
|
--
|
|
-- This package provides the interface to the RTEMS API.
|
|
--
|
|
-- DEPENDENCIES:
|
|
--
|
|
--
|
|
--
|
|
-- COPYRIGHT (c) 1997.
|
|
-- On-Line Applications Research Corporation (OAR).
|
|
--
|
|
-- The license and distribution terms for this file may in
|
|
-- the file LICENSE in this distribution or at
|
|
-- http://www.OARcorp.com/rtems/license.html.
|
|
--
|
|
-- $Id$
|
|
--
|
|
|
|
with System;
|
|
with System.Storage_Elements; use System.Storage_Elements;
|
|
with Interfaces;
|
|
with Interfaces.C;
|
|
|
|
package RTEMS is
|
|
pragma Elaborate_Body (RTEMS);
|
|
|
|
Structure_Alignment : constant := 8;
|
|
|
|
--
|
|
-- RTEMS Base Types
|
|
--
|
|
|
|
subtype Unsigned8 is Interfaces.Unsigned_8;
|
|
subtype Unsigned16 is Interfaces.Unsigned_16;
|
|
subtype Unsigned32 is Interfaces.Unsigned_32;
|
|
subtype Signed32 is Interfaces.Integer_32;
|
|
|
|
type Unsigned32_Pointer is access all RTEMS.Unsigned32;
|
|
type Unsigned16_Pointer is access all RTEMS.Unsigned16;
|
|
type Unsigned8_Pointer is access all RTEMS.Unsigned8;
|
|
type Signed32_Pointer is access all RTEMS.Signed32;
|
|
|
|
subtype Boolean is RTEMS.Unsigned32;
|
|
subtype Address is System.Address;
|
|
subtype Single is Interfaces.C.C_float;
|
|
subtype Double is Interfaces.C.Double;
|
|
|
|
--
|
|
-- The following define the size of each of the base types in
|
|
-- both bits and system units.
|
|
--
|
|
|
|
Unsigned8_Bits : constant := 7;
|
|
Unsigned16_Bits : constant := 15;
|
|
Unsigned32_Bits : constant := 31;
|
|
Boolean_Bits : constant := 31;
|
|
Address_Bits : constant := 31;
|
|
Single_Bits : constant := 31;
|
|
Double_Bits : constant := 63;
|
|
|
|
Unsigned8_Units : constant := 1;
|
|
Unsigned16_Units : constant := 2;
|
|
Unsigned32_Units : constant := 4;
|
|
Boolean_Units : constant := 4;
|
|
Address_Units : constant := 4;
|
|
Single_Units : constant := 4;
|
|
Double_Units : constant := 8;
|
|
|
|
Null_Address : constant RTEMS.Address :=
|
|
System.Storage_Elements.To_Address(0);
|
|
|
|
True : constant RTEMS.Boolean := 1;
|
|
False : constant RTEMS.Boolean := 0;
|
|
|
|
-- More Types
|
|
--
|
|
|
|
subtype Name is RTEMS.Unsigned32;
|
|
subtype ID is RTEMS.Unsigned32;
|
|
subtype Interval is RTEMS.Unsigned32;
|
|
subtype Attribute is RTEMS.Unsigned32;
|
|
subtype Mode is RTEMS.Unsigned32;
|
|
subtype Option is RTEMS.Unsigned32;
|
|
subtype Task_Priority is RTEMS.Unsigned32;
|
|
subtype Notepad_Index is RTEMS.Unsigned32 range 0 .. 15;
|
|
|
|
subtype Event_Set is RTEMS.Unsigned32;
|
|
subtype Signal_Set is RTEMS.Unsigned32;
|
|
subtype Debug_Set is RTEMS.Unsigned32;
|
|
subtype Device_Major_Number is RTEMS.Unsigned32;
|
|
subtype Device_Minor_Number is RTEMS.Unsigned32;
|
|
subtype Vector_Number is RTEMS.Unsigned32;
|
|
subtype ISR_Level is RTEMS.Unsigned32;
|
|
|
|
subtype Node is RTEMS.Unsigned32;
|
|
|
|
--
|
|
-- Task Related Types
|
|
-- XXXX fix this
|
|
subtype Task_Argument is RTEMS.Unsigned32;
|
|
type Task_Argument_PTR is access all Task_Argument;
|
|
|
|
-- XXXX fix this
|
|
subtype TCB is RTEMS.Unsigned32;
|
|
type TCB_Pointer is access all RTEMS.TCB;
|
|
|
|
subtype Task_States is RTEMS.Unsigned32;
|
|
|
|
type Task_Entry is access procedure (
|
|
Argument : RTEMS.Unsigned32
|
|
);
|
|
|
|
--
|
|
-- Clock and Time of Day Types
|
|
--
|
|
|
|
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;
|
|
|
|
type Clock_Time_Value is
|
|
record
|
|
Seconds : RTEMS.Unsigned32;
|
|
Microseconds : RTEMS.Unsigned32;
|
|
end record;
|
|
|
|
type Clock_Get_Options is (
|
|
Clock_Get_TOD,
|
|
Clock_Get_Seconds_Since_Epoch,
|
|
Clock_Get_Ticks_Since_Boot,
|
|
Clock_Get_Ticks_Per_Seconds,
|
|
Clock_Get_Time_Value
|
|
);
|
|
|
|
--
|
|
-- Device Driver Entry Prototype
|
|
--
|
|
|
|
type Device_Driver_Entry is access function (
|
|
Major : in RTEMS.Device_Major_Number;
|
|
Minor : in RTEMS.Device_Major_Number;
|
|
Argument : in RTEMS.Unsigned32;
|
|
ID : in RTEMS.Unsigned32
|
|
) return RTEMS.Unsigned32;
|
|
|
|
type Driver_Address_Table_Entry is
|
|
record
|
|
Initialization : RTEMS.Device_Driver_Entry;
|
|
Open : RTEMS.Device_Driver_Entry;
|
|
Close : RTEMS.Device_Driver_Entry;
|
|
Read : RTEMS.Device_Driver_Entry;
|
|
Write : RTEMS.Device_Driver_Entry;
|
|
Control : RTEMS.Device_Driver_Entry;
|
|
end record;
|
|
|
|
type Driver_Address_Table is array ( RTEMS.Unsigned32
|
|
range 1 .. RTEMS.Unsigned32'Last ) of RTEMS.Driver_Address_Table_Entry;
|
|
|
|
type Driver_Address_Table_Pointer is access all Driver_Address_Table;
|
|
|
|
type Driver_Name_t is
|
|
record
|
|
Device_Name : RTEMS.Address;
|
|
Device_Name_Length : RTEMS.Unsigned32;
|
|
Major : RTEMS.Device_Major_Number;
|
|
Minor : RTEMS.Device_Minor_Number;
|
|
|
|
end record;
|
|
|
|
--
|
|
-- Ident Options
|
|
--
|
|
|
|
Search_All_Nodes : constant RTEMS.Node := 0;
|
|
|
|
--
|
|
-- Options
|
|
--
|
|
|
|
Default_Options : constant RTEMS.Option := 16#0000#;
|
|
|
|
Wait : constant RTEMS.Option := 16#0000#;
|
|
No_Wait : constant RTEMS.Option := 16#0001#;
|
|
|
|
Event_All : constant RTEMS.Option := 16#0000#;
|
|
Event_Any : constant RTEMS.Option := 16#0002#;
|
|
|
|
--
|
|
-- Mode constants
|
|
--
|
|
|
|
Default_Modes : constant RTEMS.Mode := 16#0000#;
|
|
|
|
All_Mode_Masks : constant RTEMS.Mode := 16#0000_ffff#;
|
|
Current_Mode : constant RTEMS.Mode := 16#0000_0000#;
|
|
Preempt_Mask : constant RTEMS.Mode := 16#0000_0100#;
|
|
Timeslice_Mask : constant RTEMS.Mode := 16#0000_0200#;
|
|
ASR_Mask : constant RTEMS.Mode := 16#0000_0400#;
|
|
Interrupt_Mask : RTEMS.Mode;
|
|
Preempt : constant RTEMS.Mode := 16#0000_0000#;
|
|
No_Preempt : constant RTEMS.Mode := 16#0000_0100#;
|
|
No_Timeslice : constant RTEMS.Mode := 16#0000_0000#;
|
|
Timeslice : constant RTEMS.Mode := 16#0000_0200#;
|
|
ASR : constant RTEMS.Mode := 16#0000_0000#;
|
|
No_ASR : constant RTEMS.Mode := 16#0000_0400#;
|
|
|
|
pragma Import (C, Interrupt_Mask, "rtems_interrupt_mask");
|
|
|
|
--
|
|
-- Attribute constants
|
|
--
|
|
|
|
Default_Attributes : constant RTEMS.Attribute := 16#00000000#;
|
|
No_Floating_Point : constant RTEMS.Attribute := 16#00000000#;
|
|
Floating_Point : constant RTEMS.Attribute := 16#00000001#;
|
|
Local : constant RTEMS.Attribute := 16#00000000#;
|
|
Global : constant RTEMS.Attribute := 16#00000002#;
|
|
FIFO : constant RTEMS.Attribute := 16#00000000#;
|
|
Priority : constant RTEMS.Attribute := 16#00000004#;
|
|
Counting_Semaphore : constant RTEMS.Attribute := 16#00000000#;
|
|
Binary_Semaphore : constant RTEMS.Attribute := 16#00000010#;
|
|
No_Inherit_Priority : constant RTEMS.Attribute := 16#00000000#;
|
|
Inherit_Priority : constant RTEMS.Attribute := 16#00000020#;
|
|
No_Priority_Ceiling : constant RTEMS.Attribute := 16#00000000#;
|
|
Priority_Ceiling : constant RTEMS.Attribute := 16#00000040#;
|
|
|
|
function Interrupt_Level (
|
|
Level : in RTEMS.Unsigned32
|
|
) return RTEMS.Attribute;
|
|
pragma Import (C, Interrupt_Level, "rtems_interrupt_level_attribute");
|
|
|
|
Minimum_Stack_Size : RTEMS.Unsigned32;
|
|
pragma Import (C, Minimum_Stack_Size, "rtems_minimum_stack_size");
|
|
|
|
|
|
--
|
|
-- Notepad index constants
|
|
--
|
|
|
|
Notepad_0 : constant RTEMS.Unsigned32 := 0;
|
|
Notepad_1 : constant RTEMS.Unsigned32 := 1;
|
|
Notepad_2 : constant RTEMS.Unsigned32 := 2;
|
|
Notepad_3 : constant RTEMS.Unsigned32 := 3;
|
|
Notepad_4 : constant RTEMS.Unsigned32 := 4;
|
|
Notepad_5 : constant RTEMS.Unsigned32 := 5;
|
|
Notepad_6 : constant RTEMS.Unsigned32 := 6;
|
|
Notepad_7 : constant RTEMS.Unsigned32 := 7;
|
|
Notepad_8 : constant RTEMS.Unsigned32 := 8;
|
|
Notepad_9 : constant RTEMS.Unsigned32 := 9;
|
|
Notepad_10 : constant RTEMS.Unsigned32 := 10;
|
|
Notepad_11 : constant RTEMS.Unsigned32 := 11;
|
|
Notepad_12 : constant RTEMS.Unsigned32 := 12;
|
|
Notepad_13 : constant RTEMS.Unsigned32 := 13;
|
|
Notepad_14 : constant RTEMS.Unsigned32 := 14;
|
|
Notepad_15 : constant RTEMS.Unsigned32 := 15;
|
|
|
|
--
|
|
-- Miscellaneous
|
|
--
|
|
|
|
No_Timeout : constant RTEMS.Interval := 0;
|
|
Self : constant RTEMS.ID := 0;
|
|
Period_Status : constant RTEMS.Interval := 0;
|
|
Yield_Processor : constant RTEMS.Interval := 0;
|
|
Current_Priority : constant RTEMS.Task_Priority := 0;
|
|
No_Priority : constant RTEMS.Task_Priority := 0;
|
|
|
|
|
|
--
|
|
-- Extension Callouts and Table
|
|
--
|
|
|
|
type Thread_Create_Extension is access procedure (
|
|
Current_Task : in RTEMS.TCB_Pointer;
|
|
New_Task : in RTEMS.TCB_Pointer
|
|
);
|
|
|
|
type Thread_Start_Extension is access procedure (
|
|
Current_Task : in RTEMS.TCB_Pointer;
|
|
Started_Task : in RTEMS.TCB_Pointer
|
|
);
|
|
|
|
type Thread_Restart_Extension is access procedure (
|
|
Current_Task : in RTEMS.TCB_Pointer;
|
|
Restarted_Task : in RTEMS.TCB_Pointer
|
|
);
|
|
|
|
type Thread_Delete_Extension is access procedure (
|
|
Current_Task : in RTEMS.TCB_Pointer;
|
|
Deleted_Task : in RTEMS.TCB_Pointer
|
|
);
|
|
|
|
type Thread_Switch_Extension is access procedure (
|
|
Current_Task : in RTEMS.TCB_Pointer;
|
|
Heir_Task : in RTEMS.TCB_Pointer
|
|
);
|
|
|
|
type Thread_Post_Switch_Extension is access procedure (
|
|
Current_Task : in RTEMS.TCB_Pointer
|
|
);
|
|
|
|
type Thread_Begin_Extension is access procedure (
|
|
Current_Task : in RTEMS.TCB_Pointer
|
|
);
|
|
|
|
type Thread_Exitted_Extension is access procedure (
|
|
Current_Task : in RTEMS.TCB_Pointer
|
|
);
|
|
|
|
type Fatal_Error_Extension is access procedure (
|
|
Error : in RTEMS.Unsigned32
|
|
);
|
|
|
|
type Extensions_Table is
|
|
record
|
|
Thread_Create : RTEMS.Thread_Create_Extension;
|
|
Thread_Start : RTEMS.Thread_Start_Extension;
|
|
Thread_Restart : RTEMS.Thread_Restart_Extension;
|
|
Thread_Delete : RTEMS.Thread_Delete_Extension;
|
|
Thread_Switch : RTEMS.Thread_Switch_Extension;
|
|
Thread_Post_Switch : RTEMS.Thread_Post_Switch_Extension;
|
|
Thread_Begin : RTEMS.Thread_Begin_Extension;
|
|
Thread_Exitted : RTEMS.Thread_Exitted_Extension;
|
|
Fatal : RTEMS.Fatal_Error_Extension;
|
|
end record;
|
|
|
|
type Extensions_Table_Pointer is access all Extensions_Table;
|
|
|
|
--
|
|
-- The following type define a pointer to a watchdog/timer service routine.
|
|
--
|
|
|
|
type Timer_Service_Routine is access procedure (
|
|
ID : in RTEMS.ID;
|
|
User_Data : in RTEMS.Address
|
|
);
|
|
|
|
--
|
|
-- The following type define a pointer to a signal service routine.
|
|
--
|
|
|
|
type ASR_Handler is access procedure (
|
|
Signals : in RTEMS.Signal_Set
|
|
);
|
|
|
|
--
|
|
-- The following type defines the status information returned
|
|
-- about a period.
|
|
--
|
|
|
|
type Rate_Monotonic_Period_States is (
|
|
Inactive, -- off chain, never initialized
|
|
Owner_Is_Blocking, -- on chain, owner is blocking on it
|
|
Active, -- on chain, running continuously
|
|
Expired_While_Blocking, -- on chain, expired while owner was was blocking
|
|
Expired -- off chain, will be reset by next
|
|
-- rtems_rate_monotonic_period
|
|
);
|
|
|
|
for Rate_Monotonic_Period_States'Size use 32;
|
|
|
|
for Rate_Monotonic_Period_States use (
|
|
Inactive => 0,
|
|
Owner_Is_Blocking => 1,
|
|
Active => 2,
|
|
Expired_While_Blocking => 3,
|
|
Expired => 4
|
|
);
|
|
|
|
type Rate_Monotonic_Period_Status is
|
|
record
|
|
State : RTEMS.Rate_Monotonic_Period_States;
|
|
Ticks_Since_Last_Period : RTEMS.Unsigned32;
|
|
Ticks_Executed_Since_Last_Period : RTEMS.Unsigned32;
|
|
end record;
|
|
|
|
--
|
|
-- Method Completions Status Codes
|
|
--
|
|
|
|
type Status_Codes is (
|
|
Successful, -- successful completion
|
|
Task_Exitted, -- returned from a task
|
|
MP_Not_Configured, -- multiprocessing not configured
|
|
Invalid_Name, -- invalid object name
|
|
Invalid_ID, -- invalid object id
|
|
Too_Many, -- too many
|
|
Timeout, -- timed out waiting
|
|
Object_Was_Deleted, -- object deleted while waiting
|
|
Invalid_Size, -- specified size was invalid
|
|
Invalid_Address, -- address specified is invalid
|
|
Invalid_Number, -- number was invalid
|
|
Not_Defined, -- item has not been initialized
|
|
Resource_In_Use, -- resources still outstanding
|
|
Unsatisfied, -- request not satisfied
|
|
Incorrect_State, -- task is in wrong state
|
|
Already_Suspended, -- task already in state
|
|
Illegal_On_Self, -- illegal on calling task
|
|
Illegal_On_Remote_Object, -- illegal for remote object
|
|
Called_From_ISR, -- called from wrong environment
|
|
Invalid_Priority, -- invalid task priority
|
|
Invalid_Clock, -- invalid date/time
|
|
Invalid_Node, -- invalid node id
|
|
Not_Configured, -- directive not configured
|
|
Not_Owner_Of_Resource, -- not owner of resource
|
|
Not_Implemented, -- directive not implemented
|
|
Internal_Error, -- RTEMS inconsistency detected
|
|
No_Memory, -- no memory left in heap
|
|
IO_Error, -- driver IO error
|
|
Proxy_Blocking -- internal multiprocessing only
|
|
);
|
|
|
|
for Status_Codes'Size use 32;
|
|
|
|
for Status_Codes use (
|
|
Successful => 0,
|
|
Task_Exitted => 1,
|
|
MP_Not_Configured => 2,
|
|
Invalid_Name => 3,
|
|
Invalid_ID => 4,
|
|
Too_Many => 5,
|
|
Timeout => 6,
|
|
Object_Was_Deleted => 7,
|
|
Invalid_Size => 8,
|
|
Invalid_Address => 9,
|
|
Invalid_NumbeR => 10,
|
|
Not_Defined => 11,
|
|
Resource_In_Use => 12,
|
|
Unsatisfied => 13,
|
|
Incorrect_State => 14,
|
|
Already_Suspended => 15,
|
|
Illegal_On_Self => 16,
|
|
Illegal_On_Remote_Object => 17,
|
|
Called_From_ISR => 18,
|
|
Invalid_Priority => 19,
|
|
Invalid_Clock => 20,
|
|
Invalid_Node => 21,
|
|
Not_Configured => 22,
|
|
Not_Owner_Of_Resource => 23,
|
|
Not_ImplementeD => 24,
|
|
Internal_Error => 25,
|
|
No_Memory => 26,
|
|
IO_Error => 27,
|
|
Proxy_Blocking => 28
|
|
);
|
|
|
|
--
|
|
-- RTEMS Events
|
|
--
|
|
|
|
Pending_Events : constant RTEMS.Event_Set := 16#0000_0000#;
|
|
All_Events : constant RTEMS.Event_Set := 16#FFFF_FFFF#;
|
|
Event_0 : constant RTEMS.Event_Set := 16#0000_0001#;
|
|
Event_1 : constant RTEMS.Event_Set := 16#0000_0002#;
|
|
Event_2 : constant RTEMS.Event_Set := 16#0000_0004#;
|
|
Event_3 : constant RTEMS.Event_Set := 16#0000_0008#;
|
|
Event_4 : constant RTEMS.Event_Set := 16#0000_0010#;
|
|
Event_5 : constant RTEMS.Event_Set := 16#0000_0020#;
|
|
Event_6 : constant RTEMS.Event_Set := 16#0000_0040#;
|
|
Event_7 : constant RTEMS.Event_Set := 16#0000_0080#;
|
|
Event_8 : constant RTEMS.Event_Set := 16#0000_0100#;
|
|
Event_9 : constant RTEMS.Event_Set := 16#0000_0200#;
|
|
Event_10 : constant RTEMS.Event_Set := 16#0000_0400#;
|
|
Event_11 : constant RTEMS.Event_Set := 16#0000_0800#;
|
|
Event_12 : constant RTEMS.Event_Set := 16#0000_1000#;
|
|
Event_13 : constant RTEMS.Event_Set := 16#0000_2000#;
|
|
Event_14 : constant RTEMS.Event_Set := 16#0000_4000#;
|
|
Event_15 : constant RTEMS.Event_Set := 16#0000_8000#;
|
|
Event_16 : constant RTEMS.Event_Set := 16#0001_0000#;
|
|
Event_17 : constant RTEMS.Event_Set := 16#0002_0000#;
|
|
Event_18 : constant RTEMS.Event_Set := 16#0004_0000#;
|
|
Event_19 : constant RTEMS.Event_Set := 16#0008_0000#;
|
|
Event_20 : constant RTEMS.Event_Set := 16#0010_0000#;
|
|
Event_21 : constant RTEMS.Event_Set := 16#0020_0000#;
|
|
Event_22 : constant RTEMS.Event_Set := 16#0040_0000#;
|
|
Event_23 : constant RTEMS.Event_Set := 16#0080_0000#;
|
|
Event_24 : constant RTEMS.Event_Set := 16#0100_0000#;
|
|
Event_25 : constant RTEMS.Event_Set := 16#0200_0000#;
|
|
Event_26 : constant RTEMS.Event_Set := 16#0400_0000#;
|
|
Event_27 : constant RTEMS.Event_Set := 16#0800_0000#;
|
|
Event_28 : constant RTEMS.Event_Set := 16#1000_0000#;
|
|
Event_29 : constant RTEMS.Event_Set := 16#2000_0000#;
|
|
Event_30 : constant RTEMS.Event_Set := 16#4000_0000#;
|
|
Event_31 : constant RTEMS.Event_Set := 16#8000_0000#;
|
|
|
|
--
|
|
-- RTEMS Signals
|
|
--
|
|
|
|
All_Signals : constant RTEMS.Signal_Set := 16#7FFFFFFF#;
|
|
Signal_0 : constant RTEMS.Signal_Set := 16#00000001#;
|
|
Signal_1 : constant RTEMS.Signal_Set := 16#00000002#;
|
|
Signal_2 : constant RTEMS.Signal_Set := 16#00000004#;
|
|
Signal_3 : constant RTEMS.Signal_Set := 16#00000008#;
|
|
Signal_4 : constant RTEMS.Signal_Set := 16#00000010#;
|
|
Signal_5 : constant RTEMS.Signal_Set := 16#00000020#;
|
|
Signal_6 : constant RTEMS.Signal_Set := 16#00000040#;
|
|
Signal_7 : constant RTEMS.Signal_Set := 16#00000080#;
|
|
Signal_8 : constant RTEMS.Signal_Set := 16#00000100#;
|
|
Signal_9 : constant RTEMS.Signal_Set := 16#00000200#;
|
|
Signal_10 : constant RTEMS.Signal_Set := 16#00000400#;
|
|
Signal_11 : constant RTEMS.Signal_Set := 16#00000800#;
|
|
Signal_12 : constant RTEMS.Signal_Set := 16#00001000#;
|
|
Signal_13 : constant RTEMS.Signal_Set := 16#00002000#;
|
|
Signal_14 : constant RTEMS.Signal_Set := 16#00004000#;
|
|
Signal_15 : constant RTEMS.Signal_Set := 16#00008000#;
|
|
Signal_16 : constant RTEMS.Signal_Set := 16#00010000#;
|
|
Signal_17 : constant RTEMS.Signal_Set := 16#00020000#;
|
|
Signal_18 : constant RTEMS.Signal_Set := 16#00040000#;
|
|
Signal_19 : constant RTEMS.Signal_Set := 16#00080000#;
|
|
Signal_20 : constant RTEMS.Signal_Set := 16#00100000#;
|
|
Signal_21 : constant RTEMS.Signal_Set := 16#00200000#;
|
|
Signal_22 : constant RTEMS.Signal_Set := 16#00400000#;
|
|
Signal_23 : constant RTEMS.Signal_Set := 16#00800000#;
|
|
Signal_24 : constant RTEMS.Signal_Set := 16#01000000#;
|
|
Signal_25 : constant RTEMS.Signal_Set := 16#02000000#;
|
|
Signal_26 : constant RTEMS.Signal_Set := 16#04000000#;
|
|
Signal_27 : constant RTEMS.Signal_Set := 16#08000000#;
|
|
Signal_28 : constant RTEMS.Signal_Set := 16#10000000#;
|
|
Signal_29 : constant RTEMS.Signal_Set := 16#20000000#;
|
|
Signal_30 : constant RTEMS.Signal_Set := 16#40000000#;
|
|
Signal_31 : constant RTEMS.Signal_Set := 16#80000000#;
|
|
|
|
--
|
|
-- RTEMS API Configuration Information
|
|
--
|
|
|
|
type Initialization_Tasks_Table_Entry is
|
|
record
|
|
Name : RTEMS.Name; -- task name
|
|
Stack_Size : RTEMS.Unsigned32; -- task stack size
|
|
Initial_Priority : RTEMS.Task_priority; -- task priority
|
|
Attribute_Set : RTEMS.Attribute; -- task attributes
|
|
Entry_Point : RTEMS.Task_Entry; -- task entry point
|
|
Mode_Set : RTEMS.Mode; -- task initial mode
|
|
Argument : RTEMS.Unsigned32; -- task argument
|
|
end record;
|
|
|
|
type Initialization_Tasks_Table is array ( RTEMS.Unsigned32 range <> ) of
|
|
RTEMS.Initialization_Tasks_Table_Entry;
|
|
|
|
type Initialization_Tasks_Table_Pointer is access all
|
|
Initialization_Tasks_Table;
|
|
|
|
type API_Configuration_Table is
|
|
record
|
|
Maximum_Tasks : RTEMS.Unsigned32;
|
|
Maximum_Timers : RTEMS.Unsigned32;
|
|
Maximum_Semaphores : RTEMS.Unsigned32;
|
|
Maximum_Message_queues : RTEMS.Unsigned32;
|
|
Maximum_Partitions : RTEMS.Unsigned32;
|
|
Maximum_Regions : RTEMS.Unsigned32;
|
|
Maximum_Ports : RTEMS.Unsigned32;
|
|
Maximum_Periods : RTEMS.Unsigned32;
|
|
Number_Of_Initialization_Tasks : RTEMS.Unsigned32;
|
|
User_Initialization_Tasks_Table :
|
|
RTEMS.Initialization_Tasks_Table_Pointer;
|
|
end record;
|
|
|
|
type API_Configuration_Table_Pointer is access all API_Configuration_Table;
|
|
|
|
--
|
|
-- RTEMS POSIX API Configuration Information
|
|
--
|
|
|
|
type POSIX_Thread_Entry is access procedure (
|
|
Argument : in RTEMS.Address
|
|
);
|
|
|
|
type POSIX_Initialization_Threads_Table_Entry is
|
|
record
|
|
Thread_Entry : RTEMS.POSIX_Thread_Entry;
|
|
end record;
|
|
|
|
type POSIX_Initialization_Threads_Table is array
|
|
( RTEMS.Unsigned32 range <> ) of
|
|
RTEMS.POSIX_Initialization_Threads_Table_Entry;
|
|
|
|
type POSIX_Initialization_Threads_Table_Pointer is access all
|
|
POSIX_Initialization_Threads_Table;
|
|
|
|
type POSIX_API_Configuration_Table_Entry is
|
|
record
|
|
Maximum_Threads : Interfaces.C.Int;
|
|
Maximum_Mutexes : Interfaces.C.Int;
|
|
Maximum_Condition_Variables : Interfaces.C.Int;
|
|
Maximum_Keys : Interfaces.C.Int;
|
|
Maximum_Queued_Signals : Interfaces.C.Int;
|
|
Number_Of_Initialization_Tasks : Interfaces.C.Int;
|
|
User_Initialization_Tasks_Table :
|
|
RTEMS.POSIX_Initialization_Threads_Table_Pointer;
|
|
end record;
|
|
|
|
type POSIX_API_Configuration_Table is array ( RTEMS.Unsigned32 range <> ) of
|
|
RTEMS.POSIX_API_Configuration_Table_Entry;
|
|
|
|
type POSIX_API_Configuration_Table_Pointer is access all
|
|
RTEMS.POSIX_API_Configuration_Table;
|
|
|
|
--
|
|
-- MPCI Information include MPCI Configuration
|
|
--
|
|
|
|
type Configuration_Table_Pointer;
|
|
|
|
type MP_Packet_Classes is (
|
|
MP_PACKET_MPCI_INTERNAL,
|
|
MP_PACKET_TASKS,
|
|
MP_PACKET_MESSAGE_QUEUE,
|
|
MP_PACKET_SEMAPHORE,
|
|
MP_PACKET_PARTITION,
|
|
MP_PACKET_REGION,
|
|
MP_PACKET_EVENT,
|
|
MP_PACKET_SIGNAL
|
|
);
|
|
|
|
for MP_Packet_Classes use (
|
|
MP_PACKET_MPCI_INTERNAL => 0,
|
|
MP_PACKET_TASKS => 1,
|
|
MP_PACKET_MESSAGE_QUEUE => 2,
|
|
MP_PACKET_SEMAPHORE => 3,
|
|
MP_PACKET_PARTITION => 4,
|
|
MP_PACKET_REGION => 5,
|
|
MP_PACKET_EVENT => 6,
|
|
MP_PACKET_SIGNAL => 7
|
|
);
|
|
|
|
type Packet_Prefix is
|
|
record
|
|
The_Class : RTEMS.MP_Packet_Classes;
|
|
ID : RTEMS.ID;
|
|
Source_TID : RTEMS.ID;
|
|
Source_Priority : RTEMS.Task_Priority;
|
|
Return_Code : RTEMS.Unsigned32;
|
|
Length : RTEMS.Unsigned32;
|
|
To_Convert : RTEMS.Unsigned32;
|
|
Timeout : RTEMS.Interval;
|
|
end record;
|
|
|
|
type Packet_Prefix_Pointer is access all Packet_Prefix;
|
|
|
|
type MPCI_Initialization_Entry is access procedure (
|
|
Configuration : in RTEMS.Configuration_Table_Pointer
|
|
);
|
|
|
|
type MPCI_Get_Packet_Entry is access procedure (
|
|
Packet : access RTEMS.Packet_Prefix_Pointer
|
|
);
|
|
|
|
type MPCI_Return_Packet_Entry is access procedure (
|
|
Packet : in RTEMS.Packet_Prefix_Pointer
|
|
);
|
|
|
|
type MPCI_Send_Entry is access procedure (
|
|
Packet : in RTEMS.Packet_Prefix_Pointer
|
|
);
|
|
|
|
type MPCI_Receive_Entry is access procedure (
|
|
Packet : access RTEMS.Packet_Prefix_Pointer
|
|
);
|
|
|
|
type MPCI_Table is
|
|
record
|
|
Default_Timeout : RTEMS.Unsigned32; -- in ticks
|
|
Maximum_Packet_Size : RTEMS.Unsigned32;
|
|
Initialization : RTEMS.MPCI_Initialization_Entry;
|
|
Get_Packet : RTEMS.MPCI_Get_Packet_Entry;
|
|
Return_Packet : RTEMS.MPCI_Return_Packet_Entry;
|
|
Send : RTEMS.MPCI_Send_Entry;
|
|
Receive : RTEMS.MPCI_Receive_Entry;
|
|
end record;
|
|
|
|
type MPCI_Table_Pointer is access all MPCI_Table;
|
|
|
|
--
|
|
-- Configuration Information
|
|
--
|
|
|
|
type Multiprocessing_Table is
|
|
record
|
|
Node : RTEMS.Unsigned32;
|
|
Maximum_Nodes : RTEMS.Unsigned32;
|
|
Maximum_Global_Objects : RTEMS.Unsigned32;
|
|
Maximum_Proxies : RTEMS.Unsigned32;
|
|
User_MPCI_Table : RTEMS.MPCI_Table_Pointer;
|
|
end record;
|
|
|
|
type Multiprocessing_Table_Pointer is access all Multiprocessing_Table;
|
|
|
|
type Configuration_Table is
|
|
record
|
|
Work_Space_Start : RTEMS.Address;
|
|
Work_Space_Size : RTEMS.Unsigned32;
|
|
Maximum_Extensions : RTEMS.Unsigned32;
|
|
Microseconds_Per_Tick : RTEMS.Unsigned32;
|
|
Ticks_Per_Timeslice : RTEMS.Unsigned32;
|
|
Maximum_Devices : RTEMS.Unsigned32;
|
|
Number_Of_Device_Drivers : RTEMS.Unsigned32;
|
|
Device_Driver_Table : RTEMS.Driver_Address_Table_Pointer;
|
|
User_Extension_Table : RTEMS.Extensions_Table_Pointer;
|
|
User_Multiprocessing_Table : RTEMS.Multiprocessing_Table_Pointer;
|
|
RTEMS_API_Configuration : RTEMS.API_Configuration_Table_Pointer;
|
|
POSIX_API_Configuration : RTEMS.POSIX_API_Configuration_Table_Pointer;
|
|
end record;
|
|
|
|
type Configuration_Table_Pointer is access all Configuration_Table;
|
|
|
|
--
|
|
-- For now, do not provide access to the CPU Table from Ada.
|
|
-- When this type is provided, a CPU dependent file must
|
|
-- define it.
|
|
--
|
|
|
|
subtype CPU_Table is RTEMS.Address;
|
|
type CPU_Table_Pointer is access all CPU_Table;
|
|
|
|
--
|
|
-- Utility Functions
|
|
--
|
|
|
|
function From_Ada_Boolean (
|
|
Ada_Boolean : Standard.Boolean
|
|
) return RTEMS.Boolean;
|
|
|
|
function To_Ada_Boolean (
|
|
RTEMS_Boolean : RTEMS.Boolean
|
|
) return Standard.Boolean;
|
|
|
|
function Milliseconds_To_Microseconds (
|
|
Milliseconds : RTEMS.Unsigned32
|
|
) return RTEMS.Unsigned32;
|
|
|
|
function Microseconds_To_Ticks (
|
|
Microseconds : RTEMS.Unsigned32
|
|
) return RTEMS.Interval;
|
|
|
|
function Milliseconds_To_Ticks (
|
|
Milliseconds : RTEMS.Unsigned32
|
|
) return RTEMS.Interval;
|
|
|
|
function Build_Name (
|
|
C1 : in Character;
|
|
C2 : in Character;
|
|
C3 : in Character;
|
|
C4 : in Character
|
|
) return RTEMS.Name;
|
|
|
|
procedure Name_To_Characters (
|
|
Name : in RTEMS.Name;
|
|
C1 : out Character;
|
|
C2 : out Character;
|
|
C3 : out Character;
|
|
C4 : out Character
|
|
);
|
|
|
|
function Get_Node (
|
|
ID : in RTEMS.ID
|
|
) return RTEMS.Unsigned32;
|
|
|
|
function Get_Index (
|
|
ID : in RTEMS.ID
|
|
) return RTEMS.Unsigned32;
|
|
|
|
function Are_Statuses_Equal (
|
|
Status : in RTEMS.Status_Codes;
|
|
Desired : in RTEMS.Status_Codes
|
|
) return Standard.Boolean;
|
|
|
|
function Is_Status_Successful (
|
|
Status : in RTEMS.Status_Codes
|
|
) return Standard.Boolean;
|
|
|
|
function Subtract (
|
|
Left : in RTEMS.Address;
|
|
Right : in RTEMS.Address
|
|
) return RTEMS.Unsigned32;
|
|
|
|
function Are_Equal (
|
|
Left : in RTEMS.Address;
|
|
Right : in RTEMS.Address
|
|
) return Standard.Boolean;
|
|
--
|
|
-- RTEMS API
|
|
--
|
|
|
|
--
|
|
-- Initialization Manager
|
|
--
|
|
|
|
procedure Initialize_Executive (
|
|
Configuration_Table : in RTEMS.Configuration_Table_Pointer;
|
|
CPU_Table : in RTEMS.CPU_Table_Pointer
|
|
);
|
|
|
|
procedure Initialize_Executive_Early (
|
|
Configuration_Table : in RTEMS.Configuration_Table_Pointer;
|
|
CPU_Table : in RTEMS.CPU_Table_Pointer;
|
|
Level : out RTEMS.ISR_Level
|
|
);
|
|
|
|
procedure Initialize_Executive_Late (
|
|
BSP_Level : in RTEMS.ISR_Level
|
|
);
|
|
|
|
procedure Shutdown_Executive (
|
|
Result : in RTEMS.Unsigned32
|
|
);
|
|
|
|
--
|
|
-- Task Manager
|
|
--
|
|
|
|
procedure Task_Create (
|
|
Name : in RTEMS.Name;
|
|
Initial_Priority : in RTEMS.Task_Priority;
|
|
Stack_Size : in Unsigned32;
|
|
Initial_Modes : in RTEMS.Mode;
|
|
Attribute_Set : in RTEMS.Attribute;
|
|
ID : out RTEMS.ID;
|
|
Result : out RTEMS.Status_Codes
|
|
);
|
|
|
|
procedure Task_Ident (
|
|
Name : in RTEMS.Name;
|
|
Node : in RTEMS.Node;
|
|
ID : out RTEMS.ID;
|
|
Result : out RTEMS.Status_Codes
|
|
);
|
|
|
|
procedure Task_Start (
|
|
ID : in RTEMS.ID;
|
|
Entry_Point : in RTEMS.Task_Entry;
|
|
Argument : in RTEMS.Task_Argument;
|
|
Result : out RTEMS.Status_Codes
|
|
);
|
|
|
|
procedure Task_Restart (
|
|
ID : in RTEMS.ID;
|
|
Argument : in RTEMS.Task_Argument;
|
|
Result : out RTEMS.Status_Codes
|
|
);
|
|
|
|
procedure Task_Delete (
|
|
ID : in RTEMS.ID;
|
|
Result : out RTEMS.Status_Codes
|
|
);
|
|
|
|
procedure Task_Suspend (
|
|
ID : in RTEMS.ID;
|
|
Result : out RTEMS.Status_Codes
|
|
);
|
|
|
|
procedure Task_Resume (
|
|
ID : in RTEMS.ID;
|
|
Result : out RTEMS.Status_Codes
|
|
);
|
|
|
|
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
|
|
);
|
|
|
|
procedure Task_Mode (
|
|
Mode_Set : in RTEMS.Mode;
|
|
Mask : in RTEMS.Mode;
|
|
Previous_Mode_Set : out RTEMS.Mode;
|
|
Result : out RTEMS.Status_Codes
|
|
);
|
|
|
|
procedure Task_Get_Note (
|
|
ID : in RTEMS.ID;
|
|
Notepad : in RTEMS.Notepad_Index;
|
|
Note : out RTEMS.Unsigned32;
|
|
Result : out RTEMS.Status_Codes
|
|
);
|
|
|
|
procedure Task_Set_Note (
|
|
ID : in RTEMS.ID;
|
|
Notepad : in RTEMS.Notepad_Index;
|
|
Note : in RTEMS.Unsigned32;
|
|
Result : out RTEMS.Status_Codes
|
|
);
|
|
|
|
procedure Task_Wake_When (
|
|
Time_Buffer : in RTEMS.Time_Of_Day;
|
|
Result : out RTEMS.Status_Codes
|
|
);
|
|
|
|
procedure Task_Wake_After (
|
|
Ticks : in RTEMS.Interval;
|
|
Result : out RTEMS.Status_Codes
|
|
);
|
|
|
|
--
|
|
-- Interrupt Manager
|
|
--
|
|
|
|
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
|
|
);
|
|
|
|
function Interrupt_Disable return RTEMS.ISR_Level;
|
|
pragma Interface (C, Interrupt_Disable);
|
|
pragma Interface_Name (Interrupt_Disable, "rtems_interrupt_disable");
|
|
|
|
procedure Interrupt_Enable (
|
|
Level : in RTEMS.ISR_Level
|
|
);
|
|
pragma Interface (C, Interrupt_Enable);
|
|
pragma Interface_Name (Interrupt_Enable, "rtems_interrupt_enable");
|
|
|
|
procedure Interrupt_Flash (
|
|
Level : in RTEMS.ISR_Level
|
|
);
|
|
pragma Interface (C, Interrupt_Flash);
|
|
pragma Interface_Name (Interrupt_Flash, "rtems_interrupt_flash");
|
|
|
|
function Interrupt_Is_In_Progress return RTEMS.Boolean;
|
|
pragma Interface (C, Interrupt_Is_In_Progress);
|
|
pragma Interface_Name
|
|
(Interrupt_Is_In_Progress, "rtems_interrupt_is_in_progress");
|
|
|
|
--
|
|
-- Clock Manager
|
|
--
|
|
|
|
procedure Clock_Get (
|
|
Option : in RTEMS.Clock_Get_Options;
|
|
Time_Buffer : in RTEMS.Address;
|
|
Result : out RTEMS.Status_Codes
|
|
);
|
|
|
|
procedure Clock_Set (
|
|
Time_Buffer : in RTEMS.Time_Of_Day;
|
|
Result : out RTEMS.Status_Codes
|
|
);
|
|
|
|
procedure Clock_Tick (
|
|
Result : out RTEMS.Status_Codes
|
|
);
|
|
|
|
--
|
|
-- Extension Manager
|
|
--
|
|
|
|
procedure Extension_Create (
|
|
Name : in RTEMS.Name;
|
|
Table : in RTEMS.Extensions_Table_Pointer;
|
|
ID : out RTEMS.ID;
|
|
Result : out RTEMS.Status_Codes
|
|
);
|
|
|
|
procedure Extension_Ident (
|
|
Name : in RTEMS.Name;
|
|
ID : out RTEMS.ID;
|
|
Result : out RTEMS.Status_Codes
|
|
);
|
|
|
|
procedure Extension_Delete (
|
|
ID : in RTEMS.ID;
|
|
Result : out RTEMS.Status_Codes
|
|
);
|
|
|
|
|
|
--
|
|
-- Timer Manager
|
|
--
|
|
|
|
procedure Timer_Create (
|
|
Name : in RTEMS.Name;
|
|
ID : out RTEMS.ID;
|
|
Result : out RTEMS.Status_Codes
|
|
);
|
|
|
|
procedure Timer_Ident (
|
|
Name : in RTEMS.Name;
|
|
ID : out RTEMS.ID;
|
|
Result : out RTEMS.Status_Codes
|
|
);
|
|
|
|
procedure Timer_Delete (
|
|
ID : in RTEMS.ID;
|
|
Result : out RTEMS.Status_Codes
|
|
);
|
|
|
|
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
|
|
);
|
|
|
|
procedure Timer_Server_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
|
|
);
|
|
|
|
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
|
|
);
|
|
|
|
procedure Timer_Server_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
|
|
);
|
|
|
|
procedure Timer_Reset (
|
|
ID : in RTEMS.ID;
|
|
Result : out RTEMS.Status_Codes
|
|
);
|
|
|
|
procedure Timer_Cancel (
|
|
ID : in RTEMS.ID;
|
|
Result : out RTEMS.Status_Codes
|
|
);
|
|
|
|
procedure Timer_Initiate_Server (
|
|
Server_Priority : in RTEMS.Task_Priority;
|
|
Stack_Size : in Unsigned32;
|
|
Attribute_Set : in RTEMS.Attribute;
|
|
Result : out RTEMS.Status_Codes
|
|
);
|
|
|
|
--
|
|
-- Semaphore Manager
|
|
--
|
|
|
|
procedure Semaphore_Create (
|
|
Name : in RTEMS.Name;
|
|
Count : in RTEMS.Unsigned32;
|
|
Attribute_Set : in RTEMS.Attribute;
|
|
Priority_Ceiling : in RTEMS.Task_Priority;
|
|
ID : out RTEMS.ID;
|
|
Result : out RTEMS.Status_Codes
|
|
);
|
|
|
|
procedure Semaphore_Delete (
|
|
ID : in RTEMS.ID;
|
|
Result : out RTEMS.Status_Codes
|
|
);
|
|
|
|
procedure Semaphore_Ident (
|
|
Name : in RTEMS.Name;
|
|
Node : in RTEMS.Unsigned32;
|
|
ID : out RTEMS.ID;
|
|
Result : out RTEMS.Status_Codes
|
|
);
|
|
|
|
procedure Semaphore_Obtain (
|
|
ID : in RTEMS.ID;
|
|
Option_Set : in RTEMS.Option;
|
|
Timeout : in RTEMS.Interval;
|
|
Result : out RTEMS.Status_Codes
|
|
);
|
|
|
|
procedure Semaphore_Release (
|
|
ID : in RTEMS.ID;
|
|
Result : out RTEMS.Status_Codes
|
|
);
|
|
|
|
|
|
--
|
|
-- Message Queue Manager
|
|
--
|
|
|
|
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
|
|
);
|
|
|
|
procedure Message_Queue_Ident (
|
|
Name : in RTEMS.Name;
|
|
Node : in RTEMS.Unsigned32;
|
|
ID : out RTEMS.ID;
|
|
Result : out RTEMS.Status_Codes
|
|
);
|
|
|
|
procedure Message_Queue_Delete (
|
|
ID : in RTEMS.ID;
|
|
Result : out RTEMS.Status_Codes
|
|
);
|
|
|
|
procedure Message_Queue_Send (
|
|
ID : in RTEMS.ID;
|
|
Buffer : in RTEMS.Address;
|
|
Size : in RTEMS.Unsigned32;
|
|
Result : out RTEMS.Status_Codes
|
|
);
|
|
|
|
procedure Message_Queue_Urgent (
|
|
ID : in RTEMS.ID;
|
|
Buffer : in RTEMS.Address;
|
|
Size : in RTEMS.Unsigned32;
|
|
Result : out RTEMS.Status_Codes
|
|
);
|
|
|
|
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
|
|
);
|
|
|
|
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
|
|
);
|
|
|
|
procedure Message_Queue_Flush (
|
|
ID : in RTEMS.ID;
|
|
Count : out RTEMS.Unsigned32;
|
|
Result : out RTEMS.Status_Codes
|
|
);
|
|
|
|
|
|
--
|
|
-- Event Manager
|
|
--
|
|
|
|
procedure Event_Send (
|
|
ID : in RTEMS.ID;
|
|
Event_In : in RTEMS.Event_Set;
|
|
Result : out RTEMS.Status_Codes
|
|
);
|
|
|
|
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
|
|
);
|
|
|
|
--
|
|
-- Signal Manager
|
|
--
|
|
|
|
procedure Signal_Catch (
|
|
ASR_Handler : in RTEMS.ASR_Handler;
|
|
Mode_Set : in RTEMS.Mode;
|
|
Result : out RTEMS.Status_Codes
|
|
);
|
|
|
|
procedure Signal_Send (
|
|
ID : in RTEMS.ID;
|
|
Signal_Set : in RTEMS.Signal_Set;
|
|
Result : out RTEMS.Status_Codes
|
|
);
|
|
|
|
|
|
--
|
|
-- Partition Manager
|
|
--
|
|
|
|
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
|
|
);
|
|
|
|
procedure Partition_Ident (
|
|
Name : in RTEMS.Name;
|
|
Node : in RTEMS.Unsigned32;
|
|
ID : out RTEMS.ID;
|
|
Result : out RTEMS.Status_Codes
|
|
);
|
|
|
|
procedure Partition_Delete (
|
|
ID : in RTEMS.ID;
|
|
Result : out RTEMS.Status_Codes
|
|
);
|
|
|
|
procedure Partition_Get_Buffer (
|
|
ID : in RTEMS.ID;
|
|
Buffer : out RTEMS.Address;
|
|
Result : out RTEMS.Status_Codes
|
|
);
|
|
|
|
procedure Partition_Return_Buffer (
|
|
ID : in RTEMS.ID;
|
|
Buffer : in RTEMS.Address;
|
|
Result : out RTEMS.Status_Codes
|
|
);
|
|
|
|
|
|
--
|
|
-- Region Manager
|
|
--
|
|
|
|
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
|
|
);
|
|
|
|
procedure Region_Ident (
|
|
Name : in RTEMS.Name;
|
|
ID : out RTEMS.ID;
|
|
Result : out RTEMS.Status_Codes
|
|
);
|
|
|
|
procedure Region_Delete (
|
|
ID : in RTEMS.ID;
|
|
Result : out RTEMS.Status_Codes
|
|
);
|
|
|
|
procedure Region_Extend (
|
|
ID : in RTEMS.ID;
|
|
Starting_Address : in RTEMS.Address;
|
|
Length : in RTEMS.Unsigned32;
|
|
Result : out RTEMS.Status_Codes
|
|
);
|
|
|
|
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
|
|
);
|
|
|
|
procedure Region_Get_Segment_Size (
|
|
ID : in RTEMS.ID;
|
|
Segment : in RTEMS.Address;
|
|
Size : out RTEMS.Unsigned32;
|
|
Result : out RTEMS.Status_Codes
|
|
);
|
|
|
|
procedure Region_Return_Segment (
|
|
ID : in RTEMS.ID;
|
|
Segment : in RTEMS.Address;
|
|
Result : out RTEMS.Status_Codes
|
|
);
|
|
|
|
|
|
--
|
|
-- Dual Ported Memory Manager
|
|
--
|
|
|
|
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
|
|
);
|
|
|
|
procedure Port_Ident (
|
|
Name : in RTEMS.Name;
|
|
ID : out RTEMS.ID;
|
|
Result : out RTEMS.Status_Codes
|
|
);
|
|
|
|
procedure Port_Delete (
|
|
ID : in RTEMS.ID;
|
|
Result : out RTEMS.Status_Codes
|
|
);
|
|
|
|
procedure Port_External_To_Internal (
|
|
ID : in RTEMS.ID;
|
|
External : in RTEMS.Address;
|
|
Internal : out RTEMS.Address;
|
|
Result : out RTEMS.Status_Codes
|
|
);
|
|
|
|
procedure Port_Internal_To_External (
|
|
ID : in RTEMS.ID;
|
|
Internal : in RTEMS.Address;
|
|
External : out RTEMS.Address;
|
|
Result : out RTEMS.Status_Codes
|
|
);
|
|
|
|
--
|
|
-- Input/Output Manager
|
|
--
|
|
|
|
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
|
|
);
|
|
|
|
procedure IO_Register_Name (
|
|
Name : in String;
|
|
Major : in RTEMS.Device_Major_Number;
|
|
Minor : in RTEMS.Device_Minor_Number;
|
|
Result : out RTEMS.Status_Codes
|
|
);
|
|
|
|
procedure IO_Lookup_Name (
|
|
Name : in String;
|
|
Device_Info : out RTEMS.Driver_Name_t;
|
|
Result : out RTEMS.Status_Codes
|
|
);
|
|
|
|
procedure IO_Open (
|
|
Major : in RTEMS.Device_Major_Number;
|
|
Minor : in RTEMS.Device_Minor_Number;
|
|
Argument : in RTEMS.Address;
|
|
Result : out RTEMS.Status_Codes
|
|
);
|
|
|
|
procedure IO_Close (
|
|
Major : in RTEMS.Device_Major_Number;
|
|
Minor : in RTEMS.Device_Minor_Number;
|
|
Argument : in RTEMS.Address;
|
|
Result : out RTEMS.Status_Codes
|
|
);
|
|
|
|
procedure IO_Read (
|
|
Major : in RTEMS.Device_Major_Number;
|
|
Minor : in RTEMS.Device_Minor_Number;
|
|
Argument : in RTEMS.Address;
|
|
Result : out RTEMS.Status_Codes
|
|
);
|
|
|
|
procedure IO_Write (
|
|
Major : in RTEMS.Device_Major_Number;
|
|
Minor : in RTEMS.Device_Minor_Number;
|
|
Argument : in RTEMS.Address;
|
|
Result : out RTEMS.Status_Codes
|
|
);
|
|
|
|
procedure IO_Control (
|
|
Major : in RTEMS.Device_Major_Number;
|
|
Minor : in RTEMS.Device_Minor_Number;
|
|
Argument : in RTEMS.Address;
|
|
Result : out RTEMS.Status_Codes
|
|
);
|
|
|
|
|
|
--
|
|
-- Fatal Error Manager
|
|
--
|
|
|
|
procedure Fatal_Error_Occurred (
|
|
The_Error : in RTEMS.Unsigned32
|
|
);
|
|
|
|
|
|
--
|
|
-- Rate Monotonic Manager
|
|
--
|
|
|
|
procedure Rate_Monotonic_Create (
|
|
Name : in RTEMS.Name;
|
|
ID : out RTEMS.ID;
|
|
Result : out RTEMS.Status_Codes
|
|
);
|
|
|
|
procedure Rate_Monotonic_Ident (
|
|
Name : in RTEMS.Name;
|
|
ID : out RTEMS.ID;
|
|
Result : out RTEMS.Status_Codes
|
|
);
|
|
|
|
procedure Rate_Monotonic_Delete (
|
|
ID : in RTEMS.ID;
|
|
Result : out RTEMS.Status_Codes
|
|
);
|
|
|
|
procedure Rate_Monotonic_Cancel (
|
|
ID : in RTEMS.ID;
|
|
Result : out RTEMS.Status_Codes
|
|
);
|
|
|
|
procedure Rate_Monotonic_Period (
|
|
ID : in RTEMS.ID;
|
|
Length : in RTEMS.Interval;
|
|
Result : out RTEMS.Status_Codes
|
|
);
|
|
|
|
procedure Rate_Monotonic_Get_Status (
|
|
ID : in RTEMS.ID;
|
|
Status : out RTEMS.Rate_Monotonic_Period_Status;
|
|
Result : out RTEMS.Status_Codes
|
|
);
|
|
|
|
|
|
--
|
|
-- Debug Manager
|
|
--
|
|
|
|
Debug_All_Mask : constant RTEMS.Debug_Set := 16#ffffffff#;
|
|
Debug_Region : constant RTEMS.Debug_Set := 16#00000001#;
|
|
|
|
procedure Debug_Enable (
|
|
To_Be_Enabled : in RTEMS.Debug_Set
|
|
);
|
|
|
|
procedure Debug_Disable (
|
|
To_Be_Disabled : in RTEMS.Debug_Set
|
|
);
|
|
|
|
function Debug_Is_Enabled (
|
|
Level : in RTEMS.Debug_Set
|
|
) return RTEMS.Boolean;
|
|
|
|
--
|
|
-- Some Useful Data Items
|
|
--
|
|
|
|
Configuration : RTEMS.Configuration_Table_Pointer;
|
|
pragma Import (C, Configuration, "_Configuration_Table");
|
|
|
|
end RTEMS; |