Back to home page

LXR

 
 

    


Warning, /cpukit/include/adainclude/rtems.ads is written in an unsupported language. File is not indexed.

0001 -- SPDX-License-Identifier: BSD-2-Clause
0002 
0003 --  RTEMS / Specification
0004 --
0005 --  DESCRIPTION:
0006 --
0007 --  This package provides the interface to the RTEMS API.
0008 --
0009 --  DEPENDENCIES:
0010 --
0011 --  NOTES:
0012 --    RTEMS initialization and configuration are called from
0013 --    the BSP side, therefore should never be called from ADA.
0014 --
0015 --  COPYRIGHT (c) 1997-2011.
0016 --  On-Line Applications Research Corporation (OAR).
0017 --
0018 --  Redistribution and use in source and binary forms, with or without
0019 --  modification, are permitted provided that the following conditions
0020 --  are met:
0021 --  1. Redistributions of source code must retain the above copyright
0022 --     notice, this list of conditions and the following disclaimer.
0023 --  2. Redistributions in binary form must reproduce the above copyright
0024 --     notice, this list of conditions and the following disclaimer in the
0025 --     documentation and/or other materials provided with the distribution.
0026 --
0027 --  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
0028 --  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
0029 --  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
0030 --  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
0031 --  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
0032 --  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
0033 --  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
0034 --  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
0035 --  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
0036 --  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
0037 --  POSSIBILITY OF SUCH DAMAGE.
0038 --
0039 
0040 with System;
0041 with System.Storage_Elements; use System.Storage_Elements;
0042 with Interfaces;
0043 with Interfaces.C;
0044 
0045 package RTEMS is
0046 pragma Elaborate_Body (RTEMS);
0047 
0048    Structure_Alignment : constant := 8;
0049 
0050    --
0051    --  RTEMS Base Types
0052    --
0053 
0054    subtype Unsigned8  is Interfaces.Unsigned_8;
0055    subtype Unsigned16 is Interfaces.Unsigned_16;
0056    subtype Unsigned32 is Interfaces.Unsigned_32;
0057    subtype Signed32   is Interfaces.Integer_32;
0058 
0059    type Unsigned32_Pointer     is access all RTEMS.Unsigned32;
0060    type Unsigned16_Pointer     is access all RTEMS.Unsigned16;
0061    type Unsigned8_Pointer      is access all RTEMS.Unsigned8;
0062    type Signed32_Pointer       is access all RTEMS.Signed32;
0063 
0064    subtype Boolean             is RTEMS.Unsigned8;
0065    subtype Address             is System.Address;
0066    subtype Single              is Interfaces.C.C_float;
0067    subtype Double              is Interfaces.C.Double;
0068    subtype Size                is Interfaces.C.size_t;
0069 
0070    --
0071    --  The following define the size of each of the base types in
0072    --  both bits and system units.
0073    --
0074 
0075    Unsigned8_Bits   : constant := 7;
0076    Unsigned16_Bits  : constant := 15;
0077    Unsigned32_Bits  : constant := 31;
0078    Boolean_Bits     : constant := 7;
0079    Address_Bits     : constant := 31;
0080    Single_Bits      : constant := 31;
0081    Double_Bits      : constant := 63;
0082 
0083    Unsigned8_Units  : constant := 1;
0084    Unsigned16_Units : constant := 2;
0085    Unsigned32_Units : constant := 4;
0086    Boolean_Units    : constant := 1;
0087    Address_Units    : constant := 4;
0088    Single_Units     : constant := 4;
0089    Double_Units     : constant := 8;
0090 
0091    Null_Address     : constant RTEMS.Address :=
0092       System.Storage_Elements.To_Address(0);
0093 
0094    True  : constant RTEMS.Boolean := 1;
0095    False : constant RTEMS.Boolean := 0;
0096 
0097    --
0098    --  More Types
0099    --
0100 
0101    subtype Name                is RTEMS.Unsigned32;
0102    subtype ID                  is RTEMS.Unsigned32;
0103    subtype Interval            is RTEMS.Unsigned32;
0104    subtype Attribute           is RTEMS.Unsigned32;
0105    subtype Mode                is RTEMS.Unsigned32;
0106    subtype Option              is RTEMS.Unsigned32;
0107    subtype Notepad_Index       is RTEMS.Unsigned32 range 0 .. 15;
0108 
0109    subtype Event_Set           is RTEMS.Unsigned32;
0110    subtype Signal_Set          is RTEMS.Unsigned32;
0111    subtype Device_Major_Number is RTEMS.Unsigned32;
0112    subtype Device_Minor_Number is RTEMS.Unsigned32;
0113    subtype ISR_Level           is RTEMS.Unsigned32;
0114 
0115    subtype Node                is RTEMS.Unsigned32;
0116 
0117    type Driver_Name_t is
0118       record
0119          Device_Name        : RTEMS.Address;
0120          Device_Name_Length : RTEMS.Unsigned32;
0121          Major              : RTEMS.Device_Major_Number;
0122          Minor              : RTEMS.Device_Minor_Number;
0123 
0124       end record;
0125 
0126 
0127    --
0128    --  Task Related Types
0129    --
0130 
0131    subtype TCB                 is RTEMS.Unsigned32;
0132    type    TCB_Pointer         is access all RTEMS.TCB;
0133 
0134    --
0135    --  Time of Day Type
0136    --
0137 
0138    type Time_Of_Day is
0139       record
0140          Year    : RTEMS.Unsigned32; -- year, A.D.
0141          Month   : RTEMS.Unsigned32; -- month, 1 .. 12
0142          Day     : RTEMS.Unsigned32; -- day, 1 .. 31
0143          Hour    : RTEMS.Unsigned32; -- hour, 0 .. 23
0144          Minute  : RTEMS.Unsigned32; -- minute, 0 .. 59
0145          Second  : RTEMS.Unsigned32; -- second, 0 .. 59
0146          Ticks   : RTEMS.Unsigned32; -- elapsed ticks between seconds
0147       end record;
0148 
0149    type Time_T is new Long_Long_Integer;
0150 
0151    type Timespec is record
0152       TV_Sec  : Time_T;
0153       TV_Nsec : Interfaces.C.Long;
0154    end record;
0155    pragma Convention (C, Timespec);
0156 
0157    type Time_Value is
0158       record
0159          Seconds      : RTEMS.Unsigned32;
0160          Microseconds : RTEMS.Unsigned32;
0161       end record;
0162 
0163    --
0164    --  Ident Options
0165    --
0166 
0167    Search_All_Nodes   : constant RTEMS.Node := 0;
0168    Search_Other_Nodes : constant RTEMS.Node := 16#7FFFFFFE#;
0169    Search_Local_Node  : constant RTEMS.Node := 16#7FFFFFFF#;
0170    Who_Am_I           : constant RTEMS.Node := 0;
0171 
0172    --
0173    --  Options
0174    --
0175 
0176    Default_Options    : constant RTEMS.Option    := 16#0000#;
0177 
0178    Wait      : constant RTEMS.Option := 16#0000#;
0179    No_Wait   : constant RTEMS.Option := 16#0001#;
0180 
0181    Event_All : constant RTEMS.Option := 16#0000#;
0182    Event_Any : constant RTEMS.Option := 16#0002#;
0183 
0184    --
0185    --  Mode constants
0186    --
0187 
0188    Default_Modes      : constant RTEMS.Mode      := 16#0000#;
0189 
0190    All_Mode_Masks     : constant RTEMS.Mode := 16#0000_ffff#;
0191    Current_Mode       : constant RTEMS.Mode := 16#0000_0000#;
0192    Preempt_Mask       : constant RTEMS.Mode := 16#0000_0100#;
0193    Timeslice_Mask     : constant RTEMS.Mode := 16#0000_0200#;
0194    ASR_Mask           : constant RTEMS.Mode := 16#0000_0400#;
0195    Interrupt_Mask     : RTEMS.Mode;
0196    Preempt            : constant RTEMS.Mode := 16#0000_0000#;
0197    No_Preempt         : constant RTEMS.Mode := 16#0000_0100#;
0198    No_Timeslice       : constant RTEMS.Mode := 16#0000_0000#;
0199    Timeslice          : constant RTEMS.Mode := 16#0000_0200#;
0200    ASR                : constant RTEMS.Mode := 16#0000_0000#;
0201    No_ASR             : constant RTEMS.Mode := 16#0000_0400#;
0202 
0203    pragma Import (C, Interrupt_Mask, "rtems_interrupt_mask");
0204 
0205    --
0206    --  Attribute constants
0207    --
0208 
0209    Default_Attributes      : constant RTEMS.Attribute := 16#00000000#;
0210    No_Floating_Point       : constant RTEMS.Attribute := 16#00000000#;
0211    Floating_Point          : constant RTEMS.Attribute := 16#00000001#;
0212    Local                   : constant RTEMS.Attribute := 16#00000000#;
0213    Global                  : constant RTEMS.Attribute := 16#00000002#;
0214    FIFO                    : constant RTEMS.Attribute := 16#00000000#;
0215    Priority                : constant RTEMS.Attribute := 16#00000004#;
0216    Counting_Semaphore      : constant RTEMS.Attribute := 16#00000000#;
0217    Binary_Semaphore        : constant RTEMS.Attribute := 16#00000010#;
0218    Simple_Binary_Semaphore : constant RTEMS.Attribute := 16#00000020#;
0219    No_Inherit_Priority     : constant RTEMS.Attribute := 16#00000000#;
0220    Inherit_Priority        : constant RTEMS.Attribute := 16#00000040#;
0221    No_Priority_Ceiling     : constant RTEMS.Attribute := 16#00000000#;
0222    Priority_Ceiling        : constant RTEMS.Attribute := 16#00000080#;
0223    No_Multiprocessor_Resource_Sharing
0224                            : constant RTEMS.Attribute := 16#00000000#;
0225    Multiprocessor_Resource_Sharing
0226                            : constant RTEMS.Attribute := 16#00000100#;
0227    Barrier_Manual_Release  : constant RTEMS.Attribute := 16#00000000#;
0228    Barrier_Automatic_Release
0229                            : constant RTEMS.Attribute := 16#00000200#;
0230    Application_Task        : constant RTEMS.Attribute := 16#00000000#;
0231    System_Task             : constant RTEMS.Attribute := 16#00008000#;
0232 
0233    function Interrupt_Level (
0234       Level : in     RTEMS.Unsigned32
0235    ) return RTEMS.Mode;
0236    pragma Import (C, Interrupt_Level, "rtems_interrupt_level_body");
0237 
0238    function Minimum_Stack_Size return RTEMS.Size;
0239 
0240    --
0241    --  Notepad index constants
0242    --
0243 
0244    Notepad_0  : constant RTEMS.Unsigned32 := 0;
0245    Notepad_1  : constant RTEMS.Unsigned32 := 1;
0246    Notepad_2  : constant RTEMS.Unsigned32 := 2;
0247    Notepad_3  : constant RTEMS.Unsigned32 := 3;
0248    Notepad_4  : constant RTEMS.Unsigned32 := 4;
0249    Notepad_5  : constant RTEMS.Unsigned32 := 5;
0250    Notepad_6  : constant RTEMS.Unsigned32 := 6;
0251    Notepad_7  : constant RTEMS.Unsigned32 := 7;
0252    Notepad_8  : constant RTEMS.Unsigned32 := 8;
0253    Notepad_9  : constant RTEMS.Unsigned32 := 9;
0254    Notepad_10 : constant RTEMS.Unsigned32 := 10;
0255    Notepad_11 : constant RTEMS.Unsigned32 := 11;
0256    Notepad_12 : constant RTEMS.Unsigned32 := 12;
0257    Notepad_13 : constant RTEMS.Unsigned32 := 13;
0258    Notepad_14 : constant RTEMS.Unsigned32 := 14;
0259    Notepad_15 : constant RTEMS.Unsigned32 := 15;
0260 
0261    --
0262    --  Miscellaneous
0263    --
0264 
0265    No_Timeout                    : constant RTEMS.Interval := 0;
0266    Self                          : constant RTEMS.ID       := 0;
0267    Yield_Processor               : constant RTEMS.Interval := 0;
0268    Rate_Monotonic_Period_Status  : constant RTEMS.Interval := 0;
0269 
0270 
0271    --
0272    --  Extension Callouts and Table
0273    --
0274 
0275    type Thread_Create_Extension is access function (
0276       Current_Task : in     RTEMS.TCB_Pointer;
0277       New_Task     : in     RTEMS.TCB_Pointer
0278    ) return RTEMS.Boolean;
0279    pragma Convention (C, Thread_Create_Extension);
0280 
0281    type Thread_Start_Extension is access procedure (
0282       Current_Task : in     RTEMS.TCB_Pointer;
0283       Started_Task : in     RTEMS.TCB_Pointer
0284    );
0285    pragma Convention (C, Thread_Start_Extension);
0286 
0287    type Thread_Restart_Extension is access procedure (
0288       Current_Task   : in     RTEMS.TCB_Pointer;
0289       Restarted_Task : in     RTEMS.TCB_Pointer
0290    );
0291    pragma Convention (C, Thread_Restart_Extension);
0292 
0293    type Thread_Delete_Extension is access procedure (
0294       Current_Task : in     RTEMS.TCB_Pointer;
0295       Deleted_Task : in     RTEMS.TCB_Pointer
0296    );
0297    pragma Convention (C, Thread_Delete_Extension);
0298 
0299    type Thread_Switch_Extension is access procedure (
0300       Current_Task : in     RTEMS.TCB_Pointer;
0301       Heir_Task    : in     RTEMS.TCB_Pointer
0302    );
0303    pragma Convention (C, Thread_Switch_Extension);
0304 
0305    type Thread_Begin_Extension is access procedure (
0306       Current_Task : in     RTEMS.TCB_Pointer
0307    );
0308    pragma Convention (C, Thread_Begin_Extension);
0309 
0310    type Thread_Exitted_Extension is access procedure (
0311       Current_Task : in     RTEMS.TCB_Pointer
0312    );
0313    pragma Convention (C, Thread_Exitted_Extension);
0314 
0315    type Thread_Terminate_Extension is access procedure (
0316       Current_Task : in     RTEMS.TCB_Pointer
0317    );
0318    pragma Convention (C, Thread_Terminate_Extension);
0319 
0320    type Fatal_Error_Extension is access procedure (
0321       Error : in     RTEMS.Unsigned32
0322    );
0323    pragma Convention (C, Fatal_Error_Extension);
0324 
0325    type Extensions_Table is
0326       record
0327          Thread_Create      : RTEMS.Thread_Create_Extension;
0328          Thread_Start       : RTEMS.Thread_Start_Extension;
0329          Thread_Restart     : RTEMS.Thread_Restart_Extension;
0330          Thread_Delete      : RTEMS.Thread_Delete_Extension;
0331          Thread_Switch      : RTEMS.Thread_Switch_Extension;
0332          Thread_Begin       : RTEMS.Thread_Begin_Extension;
0333          Thread_Exitted     : RTEMS.Thread_Exitted_Extension;
0334          Fatal              : RTEMS.Fatal_Error_Extension;
0335          Thread_Terminate   : RTEMS.Thread_Terminate_Extension;
0336       end record;
0337 
0338    type Extensions_Table_Pointer is access all Extensions_Table;
0339 
0340    --
0341    --  The following type define a pointer to a signal service routine.
0342    --
0343 
0344    type ASR_Handler is access procedure (
0345       Signals : in     RTEMS.Signal_Set
0346    );
0347    pragma Convention (C, ASR_Handler);
0348 
0349    --
0350    --  Method Completions Status Codes
0351    --
0352 
0353    type Status_Codes is (
0354       Successful,               -- successful completion
0355       Task_Exitted,             -- returned from a task
0356       MP_Not_Configured,        -- multiprocessing not configured
0357       Invalid_Name,             -- invalid object name
0358       Invalid_ID,               -- invalid object id
0359       Too_Many,                 -- too many
0360       Timeout,                  -- timed out waiting
0361       Object_Was_Deleted,       -- object deleted while waiting
0362       Invalid_Size,             -- specified size was invalid
0363       Invalid_Address,          -- address specified is invalid
0364       Invalid_Number,           -- number was invalid
0365       Not_Defined,              -- item has not been initialized
0366       Resource_In_Use,          -- resources still outstanding
0367       Unsatisfied,              -- request not satisfied
0368       Incorrect_State,          -- task is in wrong state
0369       Already_Suspended,        -- task already in state
0370       Illegal_On_Self,          -- illegal on calling task
0371       Illegal_On_Remote_Object, -- illegal for remote object
0372       Called_From_ISR,          -- called from wrong environment
0373       Invalid_Priority,         -- invalid task priority
0374       Invalid_Clock,            -- invalid date/time
0375       Invalid_Node,             -- invalid node id
0376       Not_Configured,           -- directive not configured
0377       Not_Owner_Of_Resource,    -- not owner of resource
0378       Not_Implemented,          -- directive not implemented
0379       Internal_Error,           -- RTEMS inconsistency detected
0380       No_Memory,                -- no memory left in heap
0381       IO_Error,                 -- driver IO error
0382       Proxy_Blocking            -- internal multiprocessing only
0383    );
0384 
0385    for Status_Codes'Size use 32;
0386 
0387    for Status_Codes use (
0388       Successful                  =>  0,
0389       Task_Exitted                =>  1,
0390       MP_Not_Configured           =>  2,
0391       Invalid_Name                =>  3,
0392       Invalid_ID                  =>  4,
0393       Too_Many                    =>  5,
0394       Timeout                     =>  6,
0395       Object_Was_Deleted          =>  7,
0396       Invalid_Size                =>  8,
0397       Invalid_Address             =>  9,
0398       Invalid_NumbeR              => 10,
0399       Not_Defined                 => 11,
0400       Resource_In_Use             => 12,
0401       Unsatisfied                 => 13,
0402       Incorrect_State             => 14,
0403       Already_Suspended           => 15,
0404       Illegal_On_Self             => 16,
0405       Illegal_On_Remote_Object    => 17,
0406       Called_From_ISR             => 18,
0407       Invalid_Priority            => 19,
0408       Invalid_Clock               => 20,
0409       Invalid_Node                => 21,
0410       Not_Configured              => 22,
0411       Not_Owner_Of_Resource       => 23,
0412       Not_ImplementeD             => 24,
0413       Internal_Error              => 25,
0414       No_Memory                   => 26,
0415       IO_Error                    => 27,
0416       Proxy_Blocking              => 28
0417    );
0418 
0419    --
0420    --  RTEMS Events
0421    --
0422 
0423    Pending_Events : constant RTEMS.Event_Set := 16#0000_0000#;
0424    All_Events     : constant RTEMS.Event_Set := 16#FFFF_FFFF#;
0425    Event_0        : constant RTEMS.Event_Set := 16#0000_0001#;
0426    Event_1        : constant RTEMS.Event_Set := 16#0000_0002#;
0427    Event_2        : constant RTEMS.Event_Set := 16#0000_0004#;
0428    Event_3        : constant RTEMS.Event_Set := 16#0000_0008#;
0429    Event_4        : constant RTEMS.Event_Set := 16#0000_0010#;
0430    Event_5        : constant RTEMS.Event_Set := 16#0000_0020#;
0431    Event_6        : constant RTEMS.Event_Set := 16#0000_0040#;
0432    Event_7        : constant RTEMS.Event_Set := 16#0000_0080#;
0433    Event_8        : constant RTEMS.Event_Set := 16#0000_0100#;
0434    Event_9        : constant RTEMS.Event_Set := 16#0000_0200#;
0435    Event_10       : constant RTEMS.Event_Set := 16#0000_0400#;
0436    Event_11       : constant RTEMS.Event_Set := 16#0000_0800#;
0437    Event_12       : constant RTEMS.Event_Set := 16#0000_1000#;
0438    Event_13       : constant RTEMS.Event_Set := 16#0000_2000#;
0439    Event_14       : constant RTEMS.Event_Set := 16#0000_4000#;
0440    Event_15       : constant RTEMS.Event_Set := 16#0000_8000#;
0441    Event_16       : constant RTEMS.Event_Set := 16#0001_0000#;
0442    Event_17       : constant RTEMS.Event_Set := 16#0002_0000#;
0443    Event_18       : constant RTEMS.Event_Set := 16#0004_0000#;
0444    Event_19       : constant RTEMS.Event_Set := 16#0008_0000#;
0445    Event_20       : constant RTEMS.Event_Set := 16#0010_0000#;
0446    Event_21       : constant RTEMS.Event_Set := 16#0020_0000#;
0447    Event_22       : constant RTEMS.Event_Set := 16#0040_0000#;
0448    Event_23       : constant RTEMS.Event_Set := 16#0080_0000#;
0449    Event_24       : constant RTEMS.Event_Set := 16#0100_0000#;
0450    Event_25       : constant RTEMS.Event_Set := 16#0200_0000#;
0451    Event_26       : constant RTEMS.Event_Set := 16#0400_0000#;
0452    Event_27       : constant RTEMS.Event_Set := 16#0800_0000#;
0453    Event_28       : constant RTEMS.Event_Set := 16#1000_0000#;
0454    Event_29       : constant RTEMS.Event_Set := 16#2000_0000#;
0455    Event_30       : constant RTEMS.Event_Set := 16#4000_0000#;
0456    Event_31       : constant RTEMS.Event_Set := 16#8000_0000#;
0457 
0458    --
0459    --  RTEMS Signals
0460    --
0461 
0462    All_Signals : constant RTEMS.Signal_Set := 16#7FFFFFFF#;
0463    Signal_0    : constant RTEMS.Signal_Set := 16#00000001#;
0464    Signal_1    : constant RTEMS.Signal_Set := 16#00000002#;
0465    Signal_2    : constant RTEMS.Signal_Set := 16#00000004#;
0466    Signal_3    : constant RTEMS.Signal_Set := 16#00000008#;
0467    Signal_4    : constant RTEMS.Signal_Set := 16#00000010#;
0468    Signal_5    : constant RTEMS.Signal_Set := 16#00000020#;
0469    Signal_6    : constant RTEMS.Signal_Set := 16#00000040#;
0470    Signal_7    : constant RTEMS.Signal_Set := 16#00000080#;
0471    Signal_8    : constant RTEMS.Signal_Set := 16#00000100#;
0472    Signal_9    : constant RTEMS.Signal_Set := 16#00000200#;
0473    Signal_10   : constant RTEMS.Signal_Set := 16#00000400#;
0474    Signal_11   : constant RTEMS.Signal_Set := 16#00000800#;
0475    Signal_12   : constant RTEMS.Signal_Set := 16#00001000#;
0476    Signal_13   : constant RTEMS.Signal_Set := 16#00002000#;
0477    Signal_14   : constant RTEMS.Signal_Set := 16#00004000#;
0478    Signal_15   : constant RTEMS.Signal_Set := 16#00008000#;
0479    Signal_16   : constant RTEMS.Signal_Set := 16#00010000#;
0480    Signal_17   : constant RTEMS.Signal_Set := 16#00020000#;
0481    Signal_18   : constant RTEMS.Signal_Set := 16#00040000#;
0482    Signal_19   : constant RTEMS.Signal_Set := 16#00080000#;
0483    Signal_20   : constant RTEMS.Signal_Set := 16#00100000#;
0484    Signal_21   : constant RTEMS.Signal_Set := 16#00200000#;
0485    Signal_22   : constant RTEMS.Signal_Set := 16#00400000#;
0486    Signal_23   : constant RTEMS.Signal_Set := 16#00800000#;
0487    Signal_24   : constant RTEMS.Signal_Set := 16#01000000#;
0488    Signal_25   : constant RTEMS.Signal_Set := 16#02000000#;
0489    Signal_26   : constant RTEMS.Signal_Set := 16#04000000#;
0490    Signal_27   : constant RTEMS.Signal_Set := 16#08000000#;
0491    Signal_28   : constant RTEMS.Signal_Set := 16#10000000#;
0492    Signal_29   : constant RTEMS.Signal_Set := 16#20000000#;
0493    Signal_30   : constant RTEMS.Signal_Set := 16#40000000#;
0494    Signal_31   : constant RTEMS.Signal_Set := 16#80000000#;
0495 
0496    --
0497    --  Utility Functions
0498    --
0499 
0500    function From_Ada_Boolean (
0501       Ada_Boolean : Standard.Boolean
0502    ) return RTEMS.Boolean;
0503 
0504    function To_Ada_Boolean (
0505       RTEMS_Boolean : RTEMS.Boolean
0506    ) return Standard.Boolean;
0507 
0508    function Milliseconds_To_Microseconds (
0509       Milliseconds : RTEMS.Unsigned32
0510    ) return RTEMS.Unsigned32;
0511 
0512    function Microseconds_To_Ticks (
0513       Microseconds : RTEMS.Unsigned32
0514    ) return RTEMS.Interval;
0515 
0516    function Milliseconds_To_Ticks (
0517       Milliseconds : RTEMS.Unsigned32
0518    ) return RTEMS.Interval;
0519 
0520    procedure Name_To_Characters (
0521       Name : in     RTEMS.Name;
0522       C1   :    out Character;
0523       C2   :    out Character;
0524       C3   :    out Character;
0525       C4   :    out Character
0526    );
0527 
0528    function Get_Node (
0529       ID : in     RTEMS.ID
0530    ) return RTEMS.Unsigned32;
0531 
0532    function Get_Index (
0533       ID : in     RTEMS.ID
0534    ) return RTEMS.Unsigned32;
0535 
0536    function Are_Statuses_Equal (
0537       Status  : in     RTEMS.Status_Codes;
0538       Desired : in     RTEMS.Status_Codes
0539    ) return Standard.Boolean;
0540 
0541    function Is_Status_Successful (
0542       Status  : in     RTEMS.Status_Codes
0543    ) return Standard.Boolean;
0544 
0545    function Subtract (
0546       Left   : in     RTEMS.Address;
0547       Right  : in     RTEMS.Address
0548    ) return RTEMS.Unsigned32;
0549 
0550    function Are_Equal (
0551       Left   : in     RTEMS.Address;
0552       Right  : in     RTEMS.Address
0553    ) return Standard.Boolean;
0554 
0555    --
0556    --  RTEMS API
0557    --
0558 
0559    function Build_Name (
0560       C1 : in     Character;
0561       C2 : in     Character;
0562       C3 : in     Character;
0563       C4 : in     Character
0564    ) return RTEMS.Name;
0565 
0566    --
0567    --  Initialization Manager -- Shutdown Only
0568    --
0569    procedure Shutdown_Executive (
0570       Status : in     RTEMS.Unsigned32
0571    );
0572 
0573 end RTEMS;
0574