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

4.104.114.84.95
Last change on this file since d766b7fd was d766b7fd, checked in by Joel Sherrill <joel.sherrill@…>, on 06/02/97 at 23:46:15

added Minimum_Stack_Size and Mode constants

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