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