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

4.104.114.84.95
Last change on this file since a6b44a8a was a6b44a8a, checked in by Joel Sherrill <joel.sherrill@…>, on Jun 3, 1997 at 12:55:42 AM

added Signal constants, Is_Status_Successful, and Attribute constants.

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