source: rtems/c/src/ada/rtems.ads @ d0f426a1

4.104.114.84.95
Last change on this file since d0f426a1 was 7e3dcbc, checked in by Joel Sherrill <joel.sherrill@…>, on 06/03/97 at 00:33:48

added rtems_interrupt_level_attribute routien to return a properly
shifted interrupt_level attribute field and RTEMS_INTERRUPT_MASK.

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