source: rtems/c/src/ada/rtems.ads @ 207b35ef

4.104.114.9
Last change on this file since 207b35ef was 207b35ef, checked in by Joel Sherrill <joel.sherrill@…>, on Feb 1, 2008 at 10:48:17 PM

2008-02-01 Joel Sherrill <joel.sherrill@…>

  • rtems.adb, rtems.ads: Object_Get_Name now has a proper implementation thanks to a binding tip from Laurent Guerby.
  • Property mode set to 100644
File size: 40.1 KB
Line 
1--
2--  RTEMS / Specification
3--
4--  DESCRIPTION:
5--
6--  This package provides the interface to the RTEMS API.
7--
8--  DEPENDENCIES:
9--
10--  NOTES:
11--    RTEMS initialization and configuration are called from
12--    the BSP side, therefore should never be called from ADA.
13--
14--  COPYRIGHT (c) 1997-2008.
15--  On-Line Applications Research Corporation (OAR).
16--
17--  The license and distribution terms for this file may in
18--  the file LICENSE in this distribution or at
19--  http://www.rtems.com/license/LICENSE.
20--
21--  $Id$
22--
23
24with System;
25with System.Storage_Elements; use System.Storage_Elements;
26with Interfaces;
27with Interfaces.C;
28
29package RTEMS is
30pragma Elaborate_Body (RTEMS);
31
32   Structure_Alignment : constant := 8;
33
34   --
35   --  RTEMS Base Types
36   --
37
38   subtype Unsigned8  is Interfaces.Unsigned_8;
39   subtype Unsigned16 is Interfaces.Unsigned_16;
40   subtype Unsigned32 is Interfaces.Unsigned_32;
41   subtype Signed32   is Interfaces.Integer_32;
42
43   type Unsigned32_Pointer     is access all RTEMS.Unsigned32;
44   type Unsigned16_Pointer     is access all RTEMS.Unsigned16;
45   type Unsigned8_Pointer      is access all RTEMS.Unsigned8;
46   type Signed32_Pointer       is access all RTEMS.Signed32;
47
48   subtype Boolean             is RTEMS.Unsigned32;
49   subtype Address             is System.Address;
50   subtype Single              is Interfaces.C.C_float;
51   subtype Double              is Interfaces.C.Double;
52
53   --
54   --  The following define the size of each of the base types in
55   --  both bits and system units.
56   --
57
58   Unsigned8_Bits   : constant := 7;
59   Unsigned16_Bits  : constant := 15;
60   Unsigned32_Bits  : constant := 31;
61   Boolean_Bits     : constant := 31;
62   Address_Bits     : constant := 31;
63   Single_Bits      : constant := 31;
64   Double_Bits      : constant := 63;
65
66   Unsigned8_Units  : constant := 1;
67   Unsigned16_Units : constant := 2;
68   Unsigned32_Units : constant := 4;
69   Boolean_Units    : constant := 4;
70   Address_Units    : constant := 4;
71   Single_Units     : constant := 4;
72   Double_Units     : constant := 8;
73
74   Null_Address     : constant RTEMS.Address :=
75      System.Storage_Elements.To_Address(0);
76
77   True  : constant RTEMS.Boolean := 1;
78   False : constant RTEMS.Boolean := 0;
79
80   --
81   --  More Types
82   --
83
84   subtype Name                is RTEMS.Unsigned32;
85   subtype ID                  is RTEMS.Unsigned32;
86   subtype Interval            is RTEMS.Unsigned32;
87   subtype Attribute           is RTEMS.Unsigned32;
88   subtype Mode                is RTEMS.Unsigned32;
89   subtype Option              is RTEMS.Unsigned32;
90   subtype Task_Priority       is RTEMS.Unsigned32;
91   subtype Notepad_Index       is RTEMS.Unsigned32 range 0 .. 15;
92
93   subtype Event_Set           is RTEMS.Unsigned32;
94   subtype Signal_Set          is RTEMS.Unsigned32;
95   subtype Debug_Set           is RTEMS.Unsigned32;
96   subtype Device_Major_Number is RTEMS.Unsigned32;
97   subtype Device_Minor_Number is RTEMS.Unsigned32;
98   subtype ISR_Level           is RTEMS.Unsigned32;
99
100   subtype Node                is RTEMS.Unsigned32;
101
102   --
103   --  Task Related Types
104   --
105
106   subtype Task_Argument       is RTEMS.Unsigned32;
107   type Task_Argument_PTR      is access all Task_Argument;
108
109   type Task_Entry is access procedure (
110      Argument : RTEMS.Unsigned32
111   );
112
113   subtype TCB                 is RTEMS.Unsigned32;
114   type    TCB_Pointer         is access all RTEMS.TCB;
115
116   --
117   --  Clock and Time of Day Types
118   --
119
120   type Time_Of_Day is
121      record
122         Year    : RTEMS.Unsigned32; -- year, A.D.
123         Month   : RTEMS.Unsigned32; -- month, 1 .. 12
124         Day     : RTEMS.Unsigned32; -- day, 1 .. 31
125         Hour    : RTEMS.Unsigned32; -- hour, 0 .. 23
126         Minute  : RTEMS.Unsigned32; -- minute, 0 .. 59
127         Second  : RTEMS.Unsigned32; -- second, 0 .. 59
128         Ticks   : RTEMS.Unsigned32; -- elapsed ticks between seconds
129      end record;
130
131   type Clock_Time_Value is
132      record
133         Seconds      : RTEMS.Unsigned32;
134         Microseconds : RTEMS.Unsigned32;
135      end record;
136
137   type Clock_Get_Options is (
138      Clock_Get_TOD,
139      Clock_Get_Seconds_Since_Epoch,
140      Clock_Get_Ticks_Since_Boot,
141      Clock_Get_Ticks_Per_Second,
142      Clock_Get_Time_Value
143   );
144
145   type Time_T is new Interfaces.C.Long;
146
147   type Timespec is record
148      TV_Sec  : Time_T;
149      TV_Nsec : Interfaces.C.Long;
150   end record;
151   pragma Convention (C, Timespec);
152
153   --
154   --  Ident Options
155   --
156
157   Search_All_Nodes   : constant RTEMS.Node := 0;
158   Search_Other_Nodes : constant RTEMS.Node := 16#7FFFFFFE#;
159   Search_Local_Node  : constant RTEMS.Node := 16#7FFFFFFF#;
160   Who_Am_I           : constant RTEMS.Node := 0;
161
162   --
163   --  Options
164   --
165
166   Default_Options    : constant RTEMS.Option    := 16#0000#;
167
168   Wait      : constant RTEMS.Option := 16#0000#;
169   No_Wait   : constant RTEMS.Option := 16#0001#;
170
171   Event_All : constant RTEMS.Option := 16#0000#;
172   Event_Any : constant RTEMS.Option := 16#0002#;
173
174   --
175   --  Mode constants
176   --
177
178   Default_Modes      : constant RTEMS.Mode      := 16#0000#;
179
180   All_Mode_Masks     : constant RTEMS.Mode := 16#0000_ffff#;
181   Current_Mode       : constant RTEMS.Mode := 16#0000_0000#;
182   Preempt_Mask       : constant RTEMS.Mode := 16#0000_0100#;
183   Timeslice_Mask     : constant RTEMS.Mode := 16#0000_0200#;
184   ASR_Mask           : constant RTEMS.Mode := 16#0000_0400#;
185   Interrupt_Mask     : RTEMS.Mode;
186   Preempt            : constant RTEMS.Mode := 16#0000_0000#;
187   No_Preempt         : constant RTEMS.Mode := 16#0000_0100#;
188   No_Timeslice       : constant RTEMS.Mode := 16#0000_0000#;
189   Timeslice          : constant RTEMS.Mode := 16#0000_0200#;
190   ASR                : constant RTEMS.Mode := 16#0000_0000#;
191   No_ASR             : constant RTEMS.Mode := 16#0000_0400#;
192
193   pragma Import (C, Interrupt_Mask, "rtems_interrupt_mask");
194
195   --
196   --  Attribute constants
197   --
198
199   Default_Attributes      : constant RTEMS.Attribute := 16#00000000#;
200   No_Floating_Point       : constant RTEMS.Attribute := 16#00000000#;
201   Floating_Point          : constant RTEMS.Attribute := 16#00000001#;
202   Local                   : constant RTEMS.Attribute := 16#00000000#;
203   Global                  : constant RTEMS.Attribute := 16#00000002#;
204   FIFO                    : constant RTEMS.Attribute := 16#00000000#;
205   Priority                : constant RTEMS.Attribute := 16#00000004#;
206   Counting_Semaphore      : constant RTEMS.Attribute := 16#00000000#;
207   Binary_Semaphore        : constant RTEMS.Attribute := 16#00000010#;
208   Simple_Binary_Semaphore : constant RTEMS.Attribute := 16#00000020#;
209   No_Inherit_Priority     : constant RTEMS.Attribute := 16#00000000#;
210   Inherit_Priority        : constant RTEMS.Attribute := 16#00000040#;
211   No_Priority_Ceiling     : constant RTEMS.Attribute := 16#00000000#;
212   Priority_Ceiling        : constant RTEMS.Attribute := 16#00000080#;
213
214   function Interrupt_Level (
215      Level : in     RTEMS.Unsigned32
216   ) return RTEMS.Attribute;
217   pragma Import (C, Interrupt_Level, "rtems_interrupt_level_attribute");
218
219   Minimum_Stack_Size : RTEMS.Unsigned32;
220   pragma Import (C, Minimum_Stack_Size, "rtems_minimum_stack_size");
221
222   --
223   --  Notepad index constants
224   --
225
226   Notepad_0  : constant RTEMS.Unsigned32 := 0;
227   Notepad_1  : constant RTEMS.Unsigned32 := 1;
228   Notepad_2  : constant RTEMS.Unsigned32 := 2;
229   Notepad_3  : constant RTEMS.Unsigned32 := 3;
230   Notepad_4  : constant RTEMS.Unsigned32 := 4;
231   Notepad_5  : constant RTEMS.Unsigned32 := 5;
232   Notepad_6  : constant RTEMS.Unsigned32 := 6;
233   Notepad_7  : constant RTEMS.Unsigned32 := 7;
234   Notepad_8  : constant RTEMS.Unsigned32 := 8;
235   Notepad_9  : constant RTEMS.Unsigned32 := 9;
236   Notepad_10 : constant RTEMS.Unsigned32 := 10;
237   Notepad_11 : constant RTEMS.Unsigned32 := 11;
238   Notepad_12 : constant RTEMS.Unsigned32 := 12;
239   Notepad_13 : constant RTEMS.Unsigned32 := 13;
240   Notepad_14 : constant RTEMS.Unsigned32 := 14;
241   Notepad_15 : constant RTEMS.Unsigned32 := 15;
242
243   --
244   --  Miscellaneous
245   --
246
247   No_Timeout       : constant RTEMS.Interval := 0;
248   Self             : constant RTEMS.ID       := 0;
249   Period_Status    : constant RTEMS.Interval := 0;
250   Yield_Processor  : constant RTEMS.Interval := 0;
251   Current_Priority : constant RTEMS.Task_Priority := 0;
252   No_Priority      : constant RTEMS.Task_Priority := 0;
253
254   --
255   --  Extension Callouts and Table
256   --
257
258   type Thread_Create_Extension is access function (
259      Current_Task : in     RTEMS.TCB_Pointer;
260      New_Task     : in     RTEMS.TCB_Pointer
261   ) return RTEMS.Boolean;
262
263   type Thread_Start_Extension is access procedure (
264      Current_Task : in     RTEMS.TCB_Pointer;
265      Started_Task : in     RTEMS.TCB_Pointer
266   );
267
268   type Thread_Restart_Extension is access procedure (
269      Current_Task   : in     RTEMS.TCB_Pointer;
270      Restarted_Task : in     RTEMS.TCB_Pointer
271   );
272
273   type Thread_Delete_Extension is access procedure (
274      Current_Task : in     RTEMS.TCB_Pointer;
275      Deleted_Task : in     RTEMS.TCB_Pointer
276   );
277
278   type Thread_Switch_Extension is access procedure (
279      Current_Task : in     RTEMS.TCB_Pointer;
280      Heir_Task    : in     RTEMS.TCB_Pointer
281   );
282
283   type Thread_Post_Switch_Extension is access procedure (
284      Current_Task : in     RTEMS.TCB_Pointer
285   );
286
287   type Thread_Begin_Extension is access procedure (
288      Current_Task : in     RTEMS.TCB_Pointer
289   );
290
291   type Thread_Exitted_Extension is access procedure (
292      Current_Task : in     RTEMS.TCB_Pointer
293   );
294
295   type Fatal_Error_Extension is access procedure (
296      Error : in     RTEMS.Unsigned32
297   );
298
299   type Extensions_Table is
300      record
301         Thread_Create      : RTEMS.Thread_Create_Extension;
302         Thread_Start       : RTEMS.Thread_Start_Extension;
303         Thread_Restart     : RTEMS.Thread_Restart_Extension;
304         Thread_Delete      : RTEMS.Thread_Delete_Extension;
305         Thread_Switch      : RTEMS.Thread_Switch_Extension;
306         Thread_Post_Switch : RTEMS.Thread_Post_Switch_Extension;
307         Thread_Begin       : RTEMS.Thread_Begin_Extension;
308         Thread_Exitted     : RTEMS.Thread_Exitted_Extension;
309         Fatal              : RTEMS.Fatal_Error_Extension;
310      end record;
311
312   type Extensions_Table_Pointer is access all Extensions_Table;
313
314   --
315   --  The following type define a pointer to a watchdog/timer service routine.
316   --
317
318   type Timer_Service_Routine is access procedure (
319      ID          : in     RTEMS.ID;
320      User_Data   : in     RTEMS.Address
321   );
322
323   --
324   --  The following type define a pointer to a signal service routine.
325   --
326
327   type ASR_Handler is access procedure (
328      Signals : in     RTEMS.Signal_Set
329   );
330
331   --
332   --  The following type defines the status information returned
333   --  about a period.
334   --
335
336   type Rate_Monotonic_Period_States is (
337     Inactive,               -- off chain, never initialized
338     Owner_Is_Blocking,      -- on chain, owner is blocking on it
339     Active,                 -- on chain, running continuously
340     Expired_While_Blocking, -- on chain, expired while owner was was blocking
341     Expired                 -- off chain, will be reset by next
342                             --   rtems_rate_monotonic_period
343   );
344
345   for Rate_Monotonic_Period_States'Size use 32;
346
347   for Rate_Monotonic_Period_States use (
348     Inactive                => 0,
349     Owner_Is_Blocking       => 1,
350     Active                  => 2,
351     Expired_While_Blocking  => 3,
352     Expired                 => 4
353   );
354
355   type Rate_Monotonic_Period_Status is
356      record
357         Owner                            : RTEMS.ID;
358         State                            : RTEMS.Rate_Monotonic_Period_States;
359         Ticks_Since_Last_Period          : RTEMS.Unsigned32;
360         Ticks_Executed_Since_Last_Period : RTEMS.Unsigned32;
361      end record;
362
363   --
364   --  Method Completions Status Codes
365   --
366
367   type Status_Codes is (
368      Successful,               -- successful completion
369      Task_Exitted,             -- returned from a task
370      MP_Not_Configured,        -- multiprocessing not configured
371      Invalid_Name,             -- invalid object name
372      Invalid_ID,               -- invalid object id
373      Too_Many,                 -- too many
374      Timeout,                  -- timed out waiting
375      Object_Was_Deleted,       -- object deleted while waiting
376      Invalid_Size,             -- specified size was invalid
377      Invalid_Address,          -- address specified is invalid
378      Invalid_Number,           -- number was invalid
379      Not_Defined,              -- item has not been initialized
380      Resource_In_Use,          -- resources still outstanding
381      Unsatisfied,              -- request not satisfied
382      Incorrect_State,          -- task is in wrong state
383      Already_Suspended,        -- task already in state
384      Illegal_On_Self,          -- illegal on calling task
385      Illegal_On_Remote_Object, -- illegal for remote object
386      Called_From_ISR,          -- called from wrong environment
387      Invalid_Priority,         -- invalid task priority
388      Invalid_Clock,            -- invalid date/time
389      Invalid_Node,             -- invalid node id
390      Not_Configured,           -- directive not configured
391      Not_Owner_Of_Resource,    -- not owner of resource
392      Not_Implemented,          -- directive not implemented
393      Internal_Error,           -- RTEMS inconsistency detected
394      No_Memory,                -- no memory left in heap
395      IO_Error,                 -- driver IO error
396      Proxy_Blocking            -- internal multiprocessing only
397   );
398
399   for Status_Codes'Size use 32;
400
401   for Status_Codes use (
402      Successful                  =>  0,
403      Task_Exitted                =>  1,
404      MP_Not_Configured           =>  2,
405      Invalid_Name                =>  3,
406      Invalid_ID                  =>  4,
407      Too_Many                    =>  5,
408      Timeout                     =>  6,
409      Object_Was_Deleted          =>  7,
410      Invalid_Size                =>  8,
411      Invalid_Address             =>  9,
412      Invalid_NumbeR              => 10,
413      Not_Defined                 => 11,
414      Resource_In_Use             => 12,
415      Unsatisfied                 => 13,
416      Incorrect_State             => 14,
417      Already_Suspended           => 15,
418      Illegal_On_Self             => 16,
419      Illegal_On_Remote_Object    => 17,
420      Called_From_ISR             => 18,
421      Invalid_Priority            => 19,
422      Invalid_Clock               => 20,
423      Invalid_Node                => 21,
424      Not_Configured              => 22,
425      Not_Owner_Of_Resource       => 23,
426      Not_ImplementeD             => 24,
427      Internal_Error              => 25,
428      No_Memory                   => 26,
429      IO_Error                    => 27,
430      Proxy_Blocking              => 28
431   );
432
433   --
434   --  RTEMS Events
435   --
436
437   Pending_Events : constant RTEMS.Event_Set := 16#0000_0000#;
438   All_Events     : constant RTEMS.Event_Set := 16#FFFF_FFFF#;
439   Event_0        : constant RTEMS.Event_Set := 16#0000_0001#;
440   Event_1        : constant RTEMS.Event_Set := 16#0000_0002#;
441   Event_2        : constant RTEMS.Event_Set := 16#0000_0004#;
442   Event_3        : constant RTEMS.Event_Set := 16#0000_0008#;
443   Event_4        : constant RTEMS.Event_Set := 16#0000_0010#;
444   Event_5        : constant RTEMS.Event_Set := 16#0000_0020#;
445   Event_6        : constant RTEMS.Event_Set := 16#0000_0040#;
446   Event_7        : constant RTEMS.Event_Set := 16#0000_0080#;
447   Event_8        : constant RTEMS.Event_Set := 16#0000_0100#;
448   Event_9        : constant RTEMS.Event_Set := 16#0000_0200#;
449   Event_10       : constant RTEMS.Event_Set := 16#0000_0400#;
450   Event_11       : constant RTEMS.Event_Set := 16#0000_0800#;
451   Event_12       : constant RTEMS.Event_Set := 16#0000_1000#;
452   Event_13       : constant RTEMS.Event_Set := 16#0000_2000#;
453   Event_14       : constant RTEMS.Event_Set := 16#0000_4000#;
454   Event_15       : constant RTEMS.Event_Set := 16#0000_8000#;
455   Event_16       : constant RTEMS.Event_Set := 16#0001_0000#;
456   Event_17       : constant RTEMS.Event_Set := 16#0002_0000#;
457   Event_18       : constant RTEMS.Event_Set := 16#0004_0000#;
458   Event_19       : constant RTEMS.Event_Set := 16#0008_0000#;
459   Event_20       : constant RTEMS.Event_Set := 16#0010_0000#;
460   Event_21       : constant RTEMS.Event_Set := 16#0020_0000#;
461   Event_22       : constant RTEMS.Event_Set := 16#0040_0000#;
462   Event_23       : constant RTEMS.Event_Set := 16#0080_0000#;
463   Event_24       : constant RTEMS.Event_Set := 16#0100_0000#;
464   Event_25       : constant RTEMS.Event_Set := 16#0200_0000#;
465   Event_26       : constant RTEMS.Event_Set := 16#0400_0000#;
466   Event_27       : constant RTEMS.Event_Set := 16#0800_0000#;
467   Event_28       : constant RTEMS.Event_Set := 16#1000_0000#;
468   Event_29       : constant RTEMS.Event_Set := 16#2000_0000#;
469   Event_30       : constant RTEMS.Event_Set := 16#4000_0000#;
470   Event_31       : constant RTEMS.Event_Set := 16#8000_0000#;
471
472   --
473   --  RTEMS Signals
474   --
475
476   All_Signals : constant RTEMS.Signal_Set := 16#7FFFFFFF#;
477   Signal_0    : constant RTEMS.Signal_Set := 16#00000001#;
478   Signal_1    : constant RTEMS.Signal_Set := 16#00000002#;
479   Signal_2    : constant RTEMS.Signal_Set := 16#00000004#;
480   Signal_3    : constant RTEMS.Signal_Set := 16#00000008#;
481   Signal_4    : constant RTEMS.Signal_Set := 16#00000010#;
482   Signal_5    : constant RTEMS.Signal_Set := 16#00000020#;
483   Signal_6    : constant RTEMS.Signal_Set := 16#00000040#;
484   Signal_7    : constant RTEMS.Signal_Set := 16#00000080#;
485   Signal_8    : constant RTEMS.Signal_Set := 16#00000100#;
486   Signal_9    : constant RTEMS.Signal_Set := 16#00000200#;
487   Signal_10   : constant RTEMS.Signal_Set := 16#00000400#;
488   Signal_11   : constant RTEMS.Signal_Set := 16#00000800#;
489   Signal_12   : constant RTEMS.Signal_Set := 16#00001000#;
490   Signal_13   : constant RTEMS.Signal_Set := 16#00002000#;
491   Signal_14   : constant RTEMS.Signal_Set := 16#00004000#;
492   Signal_15   : constant RTEMS.Signal_Set := 16#00008000#;
493   Signal_16   : constant RTEMS.Signal_Set := 16#00010000#;
494   Signal_17   : constant RTEMS.Signal_Set := 16#00020000#;
495   Signal_18   : constant RTEMS.Signal_Set := 16#00040000#;
496   Signal_19   : constant RTEMS.Signal_Set := 16#00080000#;
497   Signal_20   : constant RTEMS.Signal_Set := 16#00100000#;
498   Signal_21   : constant RTEMS.Signal_Set := 16#00200000#;
499   Signal_22   : constant RTEMS.Signal_Set := 16#00400000#;
500   Signal_23   : constant RTEMS.Signal_Set := 16#00800000#;
501   Signal_24   : constant RTEMS.Signal_Set := 16#01000000#;
502   Signal_25   : constant RTEMS.Signal_Set := 16#02000000#;
503   Signal_26   : constant RTEMS.Signal_Set := 16#04000000#;
504   Signal_27   : constant RTEMS.Signal_Set := 16#08000000#;
505   Signal_28   : constant RTEMS.Signal_Set := 16#10000000#;
506   Signal_29   : constant RTEMS.Signal_Set := 16#20000000#;
507   Signal_30   : constant RTEMS.Signal_Set := 16#40000000#;
508   Signal_31   : constant RTEMS.Signal_Set := 16#80000000#;
509
510   --
511   --  Utility Functions
512   --
513
514   function From_Ada_Boolean (
515      Ada_Boolean : Standard.Boolean
516   ) return RTEMS.Boolean;
517
518   function To_Ada_Boolean (
519      RTEMS_Boolean : RTEMS.Boolean
520   ) return Standard.Boolean;
521
522   function Milliseconds_To_Microseconds (
523      Milliseconds : RTEMS.Unsigned32
524   ) return RTEMS.Unsigned32;
525
526   function Microseconds_To_Ticks (
527      Microseconds : RTEMS.Unsigned32
528   ) return RTEMS.Interval;
529
530   function Milliseconds_To_Ticks (
531      Milliseconds : RTEMS.Unsigned32
532   ) return RTEMS.Interval;
533
534   procedure Name_To_Characters (
535      Name : in     RTEMS.Name;
536      C1   :    out Character;
537      C2   :    out Character;
538      C3   :    out Character;
539      C4   :    out Character
540   );
541
542   function Get_Node (
543      ID : in     RTEMS.ID
544   ) return RTEMS.Unsigned32;
545
546   function Get_Index (
547      ID : in     RTEMS.ID
548   ) return RTEMS.Unsigned32;
549
550   function Are_Statuses_Equal (
551      Status  : in     RTEMS.Status_Codes;
552      Desired : in     RTEMS.Status_Codes
553   ) return Standard.Boolean;
554
555   function Is_Status_Successful (
556      Status  : in     RTEMS.Status_Codes
557   ) return Standard.Boolean;
558
559   function Subtract (
560      Left   : in     RTEMS.Address;
561      Right  : in     RTEMS.Address
562   ) return RTEMS.Unsigned32;
563
564   function Are_Equal (
565      Left   : in     RTEMS.Address;
566      Right  : in     RTEMS.Address
567   ) return Standard.Boolean;
568
569
570   --
571   --  RTEMS API
572   --
573
574   --
575   --  Initialization Manager -- Shutdown Only
576   --
577   procedure Shutdown_Executive (
578      Status : in     RTEMS.Unsigned32
579   );
580
581   --
582   --  Task Manager
583   --
584
585   procedure Task_Create (
586      Name             : in     RTEMS.Name;
587      Initial_Priority : in     RTEMS.Task_Priority;
588      Stack_Size       : in     Unsigned32;
589      Initial_Modes    : in     RTEMS.Mode;
590      Attribute_Set    : in     RTEMS.Attribute;
591      ID               :    out RTEMS.ID;
592      Result           :    out RTEMS.Status_Codes
593   );
594
595   procedure Task_Ident (
596      Name   : in     RTEMS.Name;
597      Node   : in     RTEMS.Node;
598      ID     :    out RTEMS.ID;
599      Result :    out RTEMS.Status_Codes
600   );
601
602   procedure Task_Start (
603      ID          : in     RTEMS.ID;
604      Entry_Point : in     RTEMS.Task_Entry;
605      Argument    : in     RTEMS.Task_Argument;
606      Result      :    out RTEMS.Status_Codes
607   );
608
609   procedure Task_Restart (
610      ID       : in     RTEMS.ID;
611      Argument : in     RTEMS.Task_Argument;
612      Result   :    out RTEMS.Status_Codes
613   );
614
615   procedure Task_Delete (
616      ID     : in     RTEMS.ID;
617      Result :    out RTEMS.Status_Codes
618   );
619
620   procedure Task_Suspend (
621      ID     : in     RTEMS.ID;
622      Result :    out RTEMS.Status_Codes
623   );
624
625   procedure Task_Resume (
626      ID     : in     RTEMS.ID;
627      Result :    out RTEMS.Status_Codes
628   );
629
630   procedure Task_Is_Suspended (
631      ID     : in     RTEMS.ID;
632      Result :    out RTEMS.Status_Codes
633   );
634
635   procedure Task_Set_Priority (
636      ID           : in     RTEMS.ID;
637      New_Priority : in     RTEMS.Task_Priority;
638      Old_Priority :    out RTEMS.Task_Priority;
639      Result       :    out RTEMS.Status_Codes
640   );
641
642   procedure Task_Mode (
643      Mode_Set          : in     RTEMS.Mode;
644      Mask              : in     RTEMS.Mode;
645      Previous_Mode_Set :    out RTEMS.Mode;
646      Result            :    out RTEMS.Status_Codes
647   );
648
649   procedure Task_Get_Note (
650      ID      : in     RTEMS.ID;
651      Notepad : in     RTEMS.Notepad_Index;
652      Note    :    out RTEMS.Unsigned32;
653      Result  :    out RTEMS.Status_Codes
654   );
655
656   procedure Task_Set_Note (
657      ID      : in     RTEMS.ID;
658      Notepad : in     RTEMS.Notepad_Index;
659      Note    : in     RTEMS.Unsigned32;
660      Result  :    out RTEMS.Status_Codes
661   );
662
663   type Task_Variable_Dtor is access procedure (
664      Argument : in     RTEMS.Address
665   );
666
667   procedure Task_Variable_Add (
668      ID            : in     RTEMS.ID;
669      Task_Variable : in     RTEMS.Address;
670      Dtor          : in     RTEMS.Task_Variable_Dtor;
671      Result        :    out RTEMS.Status_Codes
672   );
673
674   procedure Task_Variable_Get (
675      ID                  : in     RTEMS.ID;
676      Task_Variable       :    out RTEMS.Address;
677      Task_Variable_Value :    out RTEMS.Address;
678      Result              :    out RTEMS.Status_Codes
679   );
680
681   procedure Task_Variable_Delete (
682      ID                  : in     RTEMS.ID;
683      Task_Variable       :    out RTEMS.Address;
684      Result              :    out RTEMS.Status_Codes
685   );
686
687   procedure Task_Wake_When (
688      Time_Buffer : in     RTEMS.Time_Of_Day;
689      Result      :    out RTEMS.Status_Codes
690   );
691
692   procedure Task_Wake_After (
693      Ticks  : in     RTEMS.Interval;
694      Result :    out RTEMS.Status_Codes
695   );
696
697   --
698   --  Interrupt Manager
699   --
700
701   function Interrupt_Disable return RTEMS.ISR_Level;
702   pragma Interface (C, Interrupt_Disable);
703   pragma Interface_Name (Interrupt_Disable, "rtems_interrupt_disable");
704
705   procedure Interrupt_Enable (
706      Level : in     RTEMS.ISR_Level
707   );
708   pragma Interface (C, Interrupt_Enable);
709   pragma Interface_Name (Interrupt_Enable, "rtems_interrupt_enable");
710
711   procedure Interrupt_Flash (
712      Level : in     RTEMS.ISR_Level
713   );
714   pragma Interface (C, Interrupt_Flash);
715   pragma Interface_Name (Interrupt_Flash, "rtems_interrupt_flash");
716
717   function Interrupt_Is_In_Progress return RTEMS.Boolean;
718   pragma Interface (C, Interrupt_Is_In_Progress);
719   pragma Interface_Name
720     (Interrupt_Is_In_Progress, "rtems_interrupt_is_in_progress");
721
722   --
723   --  Clock Manager
724   --
725
726   procedure Clock_Set (
727      Time_Buffer : in     RTEMS.Time_Of_Day;
728      Result      :    out RTEMS.Status_Codes
729   );
730
731   procedure Clock_Get (
732      Option      : in     RTEMS.Clock_Get_Options;
733      Time_Buffer : in     RTEMS.Address;
734      Result      :    out RTEMS.Status_Codes
735   );
736
737   procedure Clock_Get_Uptime (
738      Uptime :    out RTEMS.Timespec;
739      Result :    out RTEMS.Status_Codes
740   );
741
742   procedure Clock_Tick (
743      Result :    out RTEMS.Status_Codes
744   );
745
746   --
747   --  Extension Manager
748   --
749
750   procedure Extension_Create (
751      Name   : in     RTEMS.Name;
752      Table  : in     RTEMS.Extensions_Table_Pointer;
753      ID     :    out RTEMS.ID;
754      Result :    out RTEMS.Status_Codes
755   );
756
757   procedure Extension_Ident (
758      Name   : in     RTEMS.Name;
759      ID     :    out RTEMS.ID;
760      Result :    out RTEMS.Status_Codes
761   );
762
763   procedure Extension_Delete (
764      ID     : in     RTEMS.ID;
765      Result :    out RTEMS.Status_Codes
766   );
767
768   --
769   --  Timer Manager
770   --
771
772   procedure Timer_Create (
773      Name   : in     RTEMS.Name;
774      ID     :    out RTEMS.ID;
775      Result :    out RTEMS.Status_Codes
776   );
777
778   procedure Timer_Ident (
779      Name   : in     RTEMS.Name;
780      ID     :    out RTEMS.ID;
781      Result :    out RTEMS.Status_Codes
782   );
783
784   procedure Timer_Delete (
785      ID     : in     RTEMS.ID;
786      Result :    out RTEMS.Status_Codes
787   );
788
789   procedure Timer_Fire_After (
790      ID        : in     RTEMS.ID;
791      Ticks     : in     RTEMS.Interval;
792      Routine   : in     RTEMS.Timer_Service_Routine;
793      User_Data : in     RTEMS.Address;
794      Result    :    out RTEMS.Status_Codes
795   );
796
797   procedure Timer_Server_Fire_After (
798      ID        : in     RTEMS.ID;
799      Ticks     : in     RTEMS.Interval;
800      Routine   : in     RTEMS.Timer_Service_Routine;
801      User_Data : in     RTEMS.Address;
802      Result    :    out RTEMS.Status_Codes
803   );
804
805   procedure Timer_Fire_When (
806      ID        : in     RTEMS.ID;
807      Wall_Time : in     RTEMS.Time_Of_Day;
808      Routine   : in     RTEMS.Timer_Service_Routine;
809      User_Data : in     RTEMS.Address;
810      Result    :    out RTEMS.Status_Codes
811   );
812
813   procedure Timer_Server_Fire_When (
814      ID        : in     RTEMS.ID;
815      Wall_Time : in     RTEMS.Time_Of_Day;
816      Routine   : in     RTEMS.Timer_Service_Routine;
817      User_Data : in     RTEMS.Address;
818      Result    :    out RTEMS.Status_Codes
819   );
820
821   procedure Timer_Reset (
822      ID     : in     RTEMS.ID;
823      Result :    out RTEMS.Status_Codes
824   );
825
826   procedure Timer_Cancel (
827      ID     : in     RTEMS.ID;
828      Result :    out RTEMS.Status_Codes
829   );
830
831   procedure Timer_Initiate_Server (
832      Server_Priority : in     RTEMS.Task_Priority;
833      Stack_Size      : in     Unsigned32;
834      Attribute_Set   : in     RTEMS.Attribute;
835      Result          :    out RTEMS.Status_Codes
836   );
837
838   --
839   --  Semaphore Manager
840   --
841
842   procedure Semaphore_Create (
843      Name             : in     RTEMS.Name;
844      Count            : in     RTEMS.Unsigned32;
845      Attribute_Set    : in     RTEMS.Attribute;
846      Priority_Ceiling : in     RTEMS.Task_Priority;
847      ID               :    out RTEMS.ID;
848      Result           :    out RTEMS.Status_Codes
849   );
850
851   procedure Semaphore_Delete (
852      ID     : in     RTEMS.ID;
853      Result :    out RTEMS.Status_Codes
854   );
855
856   procedure Semaphore_Ident (
857      Name   : in     RTEMS.Name;
858      Node   : in     RTEMS.Unsigned32;
859      ID     :    out RTEMS.ID;
860      Result :    out RTEMS.Status_Codes
861   );
862
863   procedure Semaphore_Obtain (
864      ID         : in     RTEMS.ID;
865      Option_Set : in     RTEMS.Option;
866      Timeout    : in     RTEMS.Interval;
867      Result     :    out RTEMS.Status_Codes
868   );
869
870   procedure Semaphore_Release (
871      ID     : in     RTEMS.ID;
872      Result :    out RTEMS.Status_Codes
873   );
874
875   procedure Semaphore_Flush (
876      ID     : in     RTEMS.ID;
877      Result :    out RTEMS.Status_Codes
878   );
879
880   --
881   --  Message Queue Manager
882   --
883
884   procedure Message_Queue_Create (
885      Name             : in     RTEMS.Name;
886      Count            : in     RTEMS.Unsigned32;
887      Max_Message_Size : in     RTEMS.Unsigned32;
888      Attribute_Set    : in     RTEMS.Attribute;
889      ID               :    out RTEMS.ID;
890      Result           :    out RTEMS.Status_Codes
891   );
892
893   procedure Message_Queue_Ident (
894      Name   : in     RTEMS.Name;
895      Node   : in     RTEMS.Unsigned32;
896      ID     :    out RTEMS.ID;
897      Result :    out RTEMS.Status_Codes
898   );
899
900   procedure Message_Queue_Delete (
901      ID     : in     RTEMS.ID;
902      Result :    out RTEMS.Status_Codes
903   );
904
905   procedure Message_Queue_Send (
906      ID     : in     RTEMS.ID;
907      Buffer : in     RTEMS.Address;
908      Size   : in     RTEMS.Unsigned32;
909      Result :    out RTEMS.Status_Codes
910   );
911
912   procedure Message_Queue_Urgent (
913      ID     : in     RTEMS.ID;
914      Buffer : in     RTEMS.Address;
915      Size   : in     RTEMS.Unsigned32;
916      Result :    out RTEMS.Status_Codes
917   );
918
919   procedure Message_Queue_Broadcast (
920      ID     : in     RTEMS.ID;
921      Buffer : in     RTEMS.Address;
922      Size   : in     RTEMS.Unsigned32;
923      Count  :    out RTEMS.Unsigned32;
924      Result :    out RTEMS.Status_Codes
925   );
926
927   procedure Message_Queue_Receive (
928      ID         : in     RTEMS.ID;
929      Buffer     : in     RTEMS.Address;
930      Option_Set : in     RTEMS.Option;
931      Timeout    : in     RTEMS.Interval;
932      Size       :    out RTEMS.Unsigned32;
933      Result     :    out RTEMS.Status_Codes
934   );
935
936   procedure Message_Queue_Get_Number_Pending (
937      ID     : in     RTEMS.ID;
938      Count  :    out RTEMS.Unsigned32;
939      Result :    out RTEMS.Status_Codes
940   );
941
942   procedure Message_Queue_Flush (
943      ID     : in     RTEMS.ID;
944      Count  :    out RTEMS.Unsigned32;
945      Result :    out RTEMS.Status_Codes
946   );
947
948   --
949   --  Event Manager
950   --
951
952   procedure Event_Send (
953      ID       : in     RTEMS.ID;
954      Event_In : in     RTEMS.Event_Set;
955      Result   :    out RTEMS.Status_Codes
956   );
957
958   procedure Event_Receive (
959      Event_In   : in     RTEMS.Event_Set;
960      Option_Set : in     RTEMS.Option;
961      Ticks      : in     RTEMS.Interval;
962      Event_Out  :    out RTEMS.Event_Set;
963      Result     :    out RTEMS.Status_Codes
964   );
965
966   --
967   --  Signal Manager
968   --
969
970   procedure Signal_Catch (
971      ASR_Handler : in     RTEMS.ASR_Handler;
972      Mode_Set    : in     RTEMS.Mode;
973      Result      :    out RTEMS.Status_Codes
974   );
975
976   procedure Signal_Send (
977      ID         : in     RTEMS.ID;
978      Signal_Set : in     RTEMS.Signal_Set;
979      Result     :    out RTEMS.Status_Codes
980   );
981
982   --
983   --  Partition Manager
984   --
985
986   procedure Partition_Create (
987      Name             : in     RTEMS.Name;
988      Starting_Address : in     RTEMS.Address;
989      Length           : in     RTEMS.Unsigned32;
990      Buffer_Size      : in     RTEMS.Unsigned32;
991      Attribute_Set    : in     RTEMS.Attribute;
992      ID               :    out RTEMS.ID;
993      Result           :    out RTEMS.Status_Codes
994   );
995
996   procedure Partition_Ident (
997      Name   : in     RTEMS.Name;
998      Node   : in     RTEMS.Unsigned32;
999      ID     :    out RTEMS.ID;
1000      Result :    out RTEMS.Status_Codes
1001   );
1002
1003   procedure Partition_Delete (
1004      ID     : in     RTEMS.ID;
1005      Result :    out RTEMS.Status_Codes
1006   );
1007
1008   procedure Partition_Get_Buffer (
1009      ID     : in     RTEMS.ID;
1010      Buffer :    out RTEMS.Address;
1011      Result :    out RTEMS.Status_Codes
1012   );
1013
1014   procedure Partition_Return_Buffer (
1015      ID     : in     RTEMS.ID;
1016      Buffer : in     RTEMS.Address;
1017      Result :    out RTEMS.Status_Codes
1018   );
1019
1020   --
1021   --  Region Manager
1022   --
1023
1024   procedure Region_Create (
1025      Name             : in     RTEMS.Name;
1026      Starting_Address : in     RTEMS.Address;
1027      Length           : in     RTEMS.Unsigned32;
1028      Page_Size        : in     RTEMS.Unsigned32;
1029      Attribute_Set    : in     RTEMS.Attribute;
1030      ID               :    out RTEMS.ID;
1031      Result           :    out RTEMS.Status_Codes
1032   );
1033
1034   procedure Region_Ident (
1035      Name   : in     RTEMS.Name;
1036      ID     :    out RTEMS.ID;
1037      Result :    out RTEMS.Status_Codes
1038   );
1039
1040   procedure Region_Delete (
1041      ID     : in     RTEMS.ID;
1042      Result :    out RTEMS.Status_Codes
1043   );
1044
1045   procedure Region_Extend (
1046      ID               : in     RTEMS.ID;
1047      Starting_Address : in     RTEMS.Address;
1048      Length           : in     RTEMS.Unsigned32;
1049      Result           :    out RTEMS.Status_Codes
1050   );
1051
1052   procedure Region_Get_Segment (
1053      ID         : in     RTEMS.ID;
1054      Size       : in     RTEMS.Unsigned32;
1055      Option_Set : in     RTEMS.Option;
1056      Timeout    : in     RTEMS.Interval;
1057      Segment    :    out RTEMS.Address;
1058      Result     :    out RTEMS.Status_Codes
1059   );
1060
1061   procedure Region_Get_Segment_Size (
1062      ID         : in     RTEMS.ID;
1063      Segment    : in     RTEMS.Address;
1064      Size       :    out RTEMS.Unsigned32;
1065      Result     :    out RTEMS.Status_Codes
1066   );
1067
1068   procedure Region_Return_Segment (
1069      ID      : in     RTEMS.ID;
1070      Segment : in     RTEMS.Address;
1071      Result  :    out RTEMS.Status_Codes
1072   );
1073
1074   procedure Region_Resize_Segment (
1075      ID         : in     RTEMS.ID;
1076      Segment    : in     RTEMS.Address;
1077      Size       : in     RTEMS.Unsigned32;
1078      Old_Size   :    out RTEMS.Unsigned32;
1079      Result     :    out RTEMS.Status_Codes
1080   );
1081
1082   --
1083   --  Dual Ported Memory Manager
1084   --
1085
1086   procedure Port_Create (
1087      Name           : in     RTEMS.Name;
1088      Internal_Start : in     RTEMS.Address;
1089      External_Start : in     RTEMS.Address;
1090      Length         : in     RTEMS.Unsigned32;
1091      ID             :    out RTEMS.ID;
1092      Result         :    out RTEMS.Status_Codes
1093   );
1094
1095   procedure Port_Ident (
1096      Name   : in     RTEMS.Name;
1097      ID     :    out RTEMS.ID;
1098      Result :    out RTEMS.Status_Codes
1099   );
1100
1101   procedure Port_Delete (
1102      ID     : in     RTEMS.ID;
1103      Result :    out RTEMS.Status_Codes
1104   );
1105
1106   procedure Port_External_To_Internal (
1107      ID       : in     RTEMS.ID;
1108      External : in     RTEMS.Address;
1109      Internal :    out RTEMS.Address;
1110      Result   :    out RTEMS.Status_Codes
1111   );
1112
1113   procedure Port_Internal_To_External (
1114      ID       : in     RTEMS.ID;
1115      Internal : in     RTEMS.Address;
1116      External :    out RTEMS.Address;
1117      Result   :    out RTEMS.Status_Codes
1118   );
1119
1120   --
1121   --  Fatal Error Manager
1122   --
1123
1124   procedure Fatal_Error_Occurred (
1125      The_Error : in     RTEMS.Unsigned32
1126   );
1127
1128   --
1129   --  Rate Monotonic Manager
1130   --
1131
1132   procedure Rate_Monotonic_Create (
1133      Name   : in     RTEMS.Name;
1134      ID     :    out RTEMS.ID;
1135      Result :    out RTEMS.Status_Codes
1136   );
1137
1138   procedure Rate_Monotonic_Ident (
1139      Name   : in     RTEMS.Name;
1140      ID     :    out RTEMS.ID;
1141      Result :    out RTEMS.Status_Codes
1142   );
1143
1144   procedure Rate_Monotonic_Delete (
1145      ID     : in     RTEMS.ID;
1146      Result :    out RTEMS.Status_Codes
1147   );
1148
1149   procedure Rate_Monotonic_Cancel (
1150      ID     : in     RTEMS.ID;
1151      Result :    out RTEMS.Status_Codes
1152   );
1153
1154   procedure Rate_Monotonic_Period (
1155      ID      : in     RTEMS.ID;
1156      Length  : in     RTEMS.Interval;
1157      Result  :    out RTEMS.Status_Codes
1158   );
1159
1160   procedure Rate_Monotonic_Get_Status (
1161      ID      : in     RTEMS.ID;
1162      Status  :    out RTEMS.Rate_Monotonic_Period_Status;
1163      Result  :    out RTEMS.Status_Codes
1164   );
1165
1166   procedure Rate_Monotonic_Reset_Statistics (
1167      ID     : in     RTEMS.ID;
1168      Result :    out RTEMS.Status_Codes
1169   );
1170
1171   procedure Rate_Monotonic_Reset_All_Statistics;
1172   pragma Import (
1173      C,
1174      Rate_Monotonic_Reset_All_Statistics,
1175      "rtems_rate_monotonic_reset_all_statistics"
1176   );
1177
1178   procedure Rate_Monotonic_Report_Statistics;
1179   pragma Import (
1180      C,
1181      Rate_Monotonic_Report_Statistics,
1182      "rtems_rate_monotonic_report_statistics"
1183   );
1184
1185   --
1186   --  Barrier Manager
1187   --
1188
1189   procedure Barrier_Create (
1190      Name            : in     RTEMS.Name;
1191      Attribute_Set   : in     RTEMS.Attribute;
1192      Maximum_Waiters : in     RTEMS.Unsigned32;
1193      ID              :    out RTEMS.ID;
1194      Result          :    out RTEMS.Status_Codes
1195   );
1196
1197   procedure Barrier_Ident (
1198      Name   : in     RTEMS.Name;
1199      ID     :    out RTEMS.ID;
1200      Result :    out RTEMS.Status_Codes
1201   );
1202
1203   procedure Barrier_Delete (
1204      ID     : in     RTEMS.ID;
1205      Result :    out RTEMS.Status_Codes
1206   );
1207
1208   procedure Barrier_Wait (
1209      ID         : in     RTEMS.ID;
1210      Timeout    : in     RTEMS.Interval;
1211      Result     :    out RTEMS.Status_Codes
1212   );
1213
1214   procedure Barrier_Release (
1215      ID       : in     RTEMS.ID;
1216      Released :    out RTEMS.Unsigned32;
1217      Result   :    out RTEMS.Status_Codes
1218   );
1219
1220   --
1221   --  Stack Bounds Checker
1222   --
1223
1224   function Stack_Checker_Is_Blown return RTEMS.Boolean;
1225   pragma Interface (C, Stack_Checker_Is_Blown);
1226   pragma Interface_Name
1227     (Interrupt_Is_In_Progress, "rtems_stack_checker_is_blown");
1228
1229   procedure Stack_Checker_Report_Usage;
1230   pragma Import (
1231      C, Stack_Checker_Report_Usage, "rtems_stack_checker_report_usage"
1232   );
1233
1234   --
1235   --  CPU Usage Statistics
1236   --
1237
1238   procedure CPU_Usage_Report;
1239   pragma Import (C, CPU_Usage_Report, "rtems_cpu_usage_report");
1240
1241   procedure CPU_Usage_Reset;
1242   pragma Import (C, CPU_Usage_Reset, "rtems_cpu_usage_reset");
1243
1244   --
1245   --  Debug Manager
1246   --
1247
1248   Debug_All_Mask : constant RTEMS.Debug_Set := 16#ffffffff#;
1249   Debug_Region   : constant RTEMS.Debug_Set := 16#00000001#;
1250
1251   procedure Debug_Enable (
1252      To_Be_Enabled : in     RTEMS.Debug_Set
1253   );
1254
1255   procedure Debug_Disable (
1256      To_Be_Disabled : in     RTEMS.Debug_Set
1257   );
1258
1259   function Debug_Is_Enabled (
1260      Level : in     RTEMS.Debug_Set
1261   ) return RTEMS.Boolean;
1262
1263   --
1264   --  Object Services
1265   --
1266
1267   function Build_Name (
1268      C1 : in     Character;
1269      C2 : in     Character;
1270      C3 : in     Character;
1271      C4 : in     Character
1272   ) return RTEMS.Name;
1273
1274   procedure Object_Get_Classic_Name(
1275      ID     : in     RTEMS.ID;
1276      Name   :    out RTEMS.Name;
1277      Result :    out RTEMS.Status_Codes
1278   );
1279
1280   procedure Object_Get_Name(
1281      ID     : in     RTEMS.ID;
1282      Name   :    out String;
1283      Result :    out RTEMS.Status_Codes
1284   );
1285
1286   procedure Object_Set_Name(
1287      ID     : in     RTEMS.ID;
1288      Name   : in     String;
1289      Result :    out RTEMS.Status_Codes
1290   );
1291
1292   procedure Object_Id_Get_API(
1293      ID  : in     RTEMS.ID;
1294      API :    out RTEMS.Unsigned32
1295   );
1296
1297   procedure Object_Id_Get_Class(
1298      ID        : in     RTEMS.ID;
1299      The_Class :    out RTEMS.Unsigned32
1300   );
1301
1302   procedure Object_Id_Get_Node(
1303      ID   : in     RTEMS.ID;
1304      Node :    out RTEMS.Unsigned32
1305   );
1306
1307   procedure Object_Id_Get_Index(
1308      ID    : in     RTEMS.ID;
1309      Index :    out RTEMS.Unsigned32
1310   );
1311
1312   function Build_Id(
1313      The_API   : in     RTEMS.Unsigned32;
1314      The_Class : in     RTEMS.Unsigned32;
1315      The_Node  : in     RTEMS.Unsigned32;
1316      The_Index : in     RTEMS.Unsigned32
1317   ) return RTEMS.Id;
1318
1319   function Object_Id_API_Minimum return RTEMS.Unsigned32;
1320
1321   function Object_Id_API_Maximum return RTEMS.Unsigned32;
1322
1323   procedure Object_API_Minimum_Class(
1324      API     : in     RTEMS.Unsigned32;
1325      Minimum :    out RTEMS.Unsigned32
1326   );
1327
1328   procedure Object_API_Maximum_Class(
1329      API     : in     RTEMS.Unsigned32;
1330      Maximum :    out RTEMS.Unsigned32
1331   );
1332
1333   procedure Object_Get_API_Name(
1334      API  : in     RTEMS.Unsigned32;
1335      Name :    out String
1336   );
1337
1338   procedure Object_Get_API_Class_Name(
1339      The_API   : in     RTEMS.Unsigned32;
1340      The_Class : in     RTEMS.Unsigned32;
1341      Name      :    out String
1342   );
1343
1344   type Object_API_Class_Information is
1345     record
1346        Minimum_Id    : RTEMS.Id;
1347        Maximum_Id    : RTEMS.Id;
1348        Maximum       : RTEMS.Unsigned32;
1349        AutoExtend    : RTEMS.Boolean;
1350        Unallocated   : RTEMS.Unsigned32;
1351     end record;
1352
1353   procedure Object_Get_Class_Information(
1354      The_API   : in     RTEMS.Unsigned32;
1355      The_Class : in     RTEMS.Unsigned32;
1356      Info      :    out RTEMS.Object_API_Class_Information;
1357      Result    :    out RTEMS.Status_Codes
1358   );
1359
1360end RTEMS;
Note: See TracBrowser for help on using the repository browser.