diff options
Diffstat (limited to 'cpukit/ada/rtems.ads')
-rw-r--r-- | cpukit/ada/rtems.ads | 1430 |
1 files changed, 0 insertions, 1430 deletions
diff --git a/cpukit/ada/rtems.ads b/cpukit/ada/rtems.ads deleted file mode 100644 index 508f24046f..0000000000 --- a/cpukit/ada/rtems.ads +++ /dev/null @@ -1,1430 +0,0 @@ --- --- 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 - - 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; - - type Unsigned32_Pointer is access all RTEMS.Unsigned32; - type Unsigned16_Pointer is access all RTEMS.Unsigned16; - type Unsigned8_Pointer is access all RTEMS.Unsigned8; - - 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; - Number_Of_Initial_Extensions : RTEMS.Unsigned32; - 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; - - procedure Interrupt_Enable ( - Level : in RTEMS.ISR_Level - ); - - procedure Interrupt_Flash ( - Level : in RTEMS.ISR_Level - ); - - function Interrupt_Is_In_Progress - return RTEMS.Boolean; - - -- - -- 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_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 - ); - - -- - -- 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 - ); - - -- - -- Multiprocessing Manager - -- - - procedure Multiprocessing_Announce; - - - -- - -- 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"); - - -private -end RTEMS; |