source: rtems/c/src/ada/rtems-tasks.adb @ c499856

4.115
Last change on this file since c499856 was c499856, checked in by Chris Johns <chrisj@…>, on Mar 20, 2014 at 9:10:47 PM

Change all references of rtems.com to rtems.org.

  • Property mode set to 100644
File size: 9.1 KB
Line 
1--
2--  RTEMS / Body
3--
4--  DESCRIPTION:
5--
6--  This package provides the interface to the RTEMS API.
7--
8--
9--  DEPENDENCIES:
10--
11--
12--
13--  COPYRIGHT (c) 1997-2008.
14--  On-Line Applications Research Corporation (OAR).
15--
16--  The license and distribution terms for this file may in
17--  the file LICENSE in this distribution or at
18--  http://www.rtems.org/license/LICENSE.
19--
20
21package body RTEMS.Tasks is
22
23   --
24   --  Task Manager
25   --
26
27   procedure Create
28     (Name             : in RTEMS.Name;
29      Initial_Priority : in Priority;
30      Stack_Size       : in RTEMS.Unsigned32;
31      Initial_Modes    : in RTEMS.Mode;
32      Attribute_Set    : in RTEMS.Attribute;
33      ID               : out RTEMS.ID;
34      Result           : out RTEMS.Status_Codes)
35   is
36      function Create_Base
37        (Name             : RTEMS.Name;
38         Initial_Priority : Priority;
39         Stack_Size       : RTEMS.Unsigned32;
40         Initial_Modes    : RTEMS.Mode;
41         Attribute_Set    : RTEMS.Attribute;
42         ID               : access RTEMS.ID)
43         return             RTEMS.Status_Codes;
44      pragma Import (C, Create_Base, "rtems_task_create");
45      ID_Base : aliased RTEMS.ID;
46   begin
47      Result :=
48         Create_Base
49           (Name,
50            Initial_Priority,
51            Stack_Size,
52            Initial_Modes,
53            Attribute_Set,
54            ID_Base'Access);
55      ID     := ID_Base;
56   end Create;
57
58   procedure Ident
59     (Name   : in RTEMS.Name;
60      Node   : in RTEMS.Node;
61      ID     : out RTEMS.ID;
62      Result : out RTEMS.Status_Codes)
63   is
64
65      function Ident_Base
66        (Name : RTEMS.Name;
67         Node : RTEMS.Node;
68         ID   : access RTEMS.ID)
69         return RTEMS.Status_Codes;
70      pragma Import (C, Ident_Base, "rtems_task_ident");
71      ID_Base : aliased RTEMS.ID;
72
73   begin
74
75      Result := Ident_Base (Name, Node, ID_Base'Access);
76      ID     := ID_Base;
77
78   end Ident;
79
80   procedure Start
81     (ID          : in RTEMS.ID;
82      Entry_Point : in RTEMS.Tasks.Entry_Point;
83      Argument    : in RTEMS.Tasks.Argument;
84      Result      : out RTEMS.Status_Codes)
85   is
86      function Start_Base
87        (ID          : RTEMS.ID;
88         Entry_Point : RTEMS.Tasks.Entry_Point;
89         Argument    : RTEMS.Tasks.Argument)
90         return        RTEMS.Status_Codes;
91      pragma Import (C, Start_Base, "rtems_task_start");
92   begin
93
94      Result := Start_Base (ID, Entry_Point, Argument);
95
96   end Start;
97
98   procedure Restart
99     (ID       : in RTEMS.ID;
100      Argument : in RTEMS.Tasks.Argument;
101      Result   : out RTEMS.Status_Codes)
102   is
103      function Restart_Base
104        (ID       : RTEMS.ID;
105         Argument : RTEMS.Tasks.Argument)
106         return     RTEMS.Status_Codes;
107      pragma Import (C, Restart_Base, "rtems_task_restart");
108   begin
109
110      Result := Restart_Base (ID, Argument);
111
112   end Restart;
113
114   procedure Delete
115     (ID     : in RTEMS.ID;
116      Result : out RTEMS.Status_Codes)
117   is
118      function Delete_Base (ID : RTEMS.ID) return RTEMS.Status_Codes;
119      pragma Import (C, Delete_Base, "rtems_task_delete");
120   begin
121
122      Result := Delete_Base (ID);
123
124   end Delete;
125
126   procedure Suspend
127     (ID     : in RTEMS.ID;
128      Result : out RTEMS.Status_Codes)
129   is
130      function Suspend_Base (ID : RTEMS.ID) return RTEMS.Status_Codes;
131      pragma Import (C, Suspend_Base, "rtems_task_suspend");
132   begin
133
134      Result := Suspend_Base (ID);
135
136   end Suspend;
137
138   procedure Resume
139     (ID     : in RTEMS.ID;
140      Result : out RTEMS.Status_Codes)
141   is
142      function Resume_Base (ID : RTEMS.ID) return RTEMS.Status_Codes;
143      pragma Import (C, Resume_Base, "rtems_task_resume");
144   begin
145
146      Result := Resume_Base (ID);
147
148   end Resume;
149
150   procedure Is_Suspended
151     (ID     : in RTEMS.ID;
152      Result : out RTEMS.Status_Codes)
153   is
154      function Is_Suspended_Base
155        (ID   : RTEMS.ID)
156         return RTEMS.Status_Codes;
157      pragma Import (C, Is_Suspended_Base, "rtems_task_is_suspended");
158   begin
159
160      Result := Is_Suspended_Base (ID);
161
162   end Is_Suspended;
163
164   procedure Set_Priority
165     (ID           : in RTEMS.ID;
166      New_Priority : in Priority;
167      Old_Priority : out Priority;
168      Result       : out RTEMS.Status_Codes)
169   is
170      function Set_Priority_Base
171        (ID           : RTEMS.ID;
172         New_Priority : Priority;
173         Old_Priority : access Priority)
174         return         RTEMS.Status_Codes;
175      pragma Import (C, Set_Priority_Base, "rtems_task_set_priority");
176      Old_Priority_Base : aliased Priority;
177   begin
178
179      Result       :=
180         Set_Priority_Base (ID, New_Priority, Old_Priority_Base'Access);
181      Old_Priority := Old_Priority_Base;
182
183   end Set_Priority;
184
185   procedure Mode
186     (Mode_Set          : in RTEMS.Mode;
187      Mask              : in RTEMS.Mode;
188      Previous_Mode_Set : out RTEMS.Mode;
189      Result            : out RTEMS.Status_Codes)
190   is
191      function Mode_Base
192        (Mode_Set          : RTEMS.Mode;
193         Mask              : RTEMS.Mode;
194         Previous_Mode_Set : access RTEMS.Mode)
195         return              RTEMS.Status_Codes;
196      pragma Import (C, Mode_Base, "rtems_task_mode");
197      Previous_Mode_Set_Base : aliased RTEMS.Mode;
198   begin
199
200      Result            :=
201         Mode_Base (Mode_Set, Mask, Previous_Mode_Set_Base'Access);
202      Previous_Mode_Set := Previous_Mode_Set_Base;
203
204   end Mode;
205
206   procedure Get_Note
207     (ID      : in RTEMS.ID;
208      Notepad : in RTEMS.Notepad_Index;
209      Note    : out RTEMS.Unsigned32;
210      Result  : out RTEMS.Status_Codes)
211   is
212      function Get_Note_Base
213        (ID      : RTEMS.ID;
214         Notepad : RTEMS.Notepad_Index;
215         Note    : access RTEMS.Unsigned32)
216         return    RTEMS.Status_Codes;
217      pragma Import (C, Get_Note_Base, "rtems_task_get_note");
218      Note_Base : aliased RTEMS.Unsigned32;
219   begin
220
221      Result := Get_Note_Base (ID, Notepad, Note_Base'Access);
222      Note   := Note_Base;
223
224   end Get_Note;
225
226   procedure Set_Note
227     (ID      : in RTEMS.ID;
228      Notepad : in RTEMS.Notepad_Index;
229      Note    : in RTEMS.Unsigned32;
230      Result  : out RTEMS.Status_Codes)
231   is
232      function Set_Note_Base
233        (ID      : RTEMS.ID;
234         Notepad : RTEMS.Notepad_Index;
235         Note    : RTEMS.Unsigned32)
236         return    RTEMS.Status_Codes;
237      pragma Import (C, Set_Note_Base, "rtems_task_set_note");
238   begin
239
240      Result := Set_Note_Base (ID, Notepad, Note);
241
242   end Set_Note;
243
244   procedure Variable_Add
245     (ID            : in RTEMS.ID;
246      Task_Variable : in RTEMS.Address;
247      Dtor          : in Variable_Dtor;
248      Result        : out RTEMS.Status_Codes)
249   is
250      function Variable_Add_Base
251        (ID            : RTEMS.ID;
252         Task_Variable : RTEMS.Address;
253         Dtor          : Variable_Dtor)
254         return          RTEMS.Status_Codes;
255      pragma Import (C, Variable_Add_Base, "rtems_task_variable_add");
256   begin
257
258      Result := Variable_Add_Base (ID, Task_Variable, Dtor);
259
260   end Variable_Add;
261
262   procedure Variable_Get
263     (ID                  : in RTEMS.ID;
264      Task_Variable       : out RTEMS.Address;
265      Task_Variable_Value : out RTEMS.Address;
266      Result              : out RTEMS.Status_Codes)
267   is
268      function Variable_Get_Base
269        (ID                  : RTEMS.ID;
270         Task_Variable       : access RTEMS.Address;
271         Task_Variable_Value : access RTEMS.Address)
272         return                RTEMS.Status_Codes;
273      pragma Import (C, Variable_Get_Base, "rtems_task_variable_get");
274      Task_Variable_Base       : aliased RTEMS.Address;
275      Task_Variable_Value_Base : aliased RTEMS.Address;
276   begin
277
278      Result              :=
279         Variable_Get_Base
280           (ID,
281            Task_Variable_Base'Access,
282            Task_Variable_Value_Base'Access);
283      Task_Variable       := Task_Variable_Base;
284      Task_Variable_Value := Task_Variable_Value_Base;
285
286   end Variable_Get;
287
288   procedure Variable_Delete
289     (ID            : in RTEMS.ID;
290      Task_Variable : out RTEMS.Address;
291      Result        : out RTEMS.Status_Codes)
292   is
293      function Variable_Delete_Base
294        (ID            : RTEMS.ID;
295         Task_Variable : access RTEMS.Address)
296         return          RTEMS.Status_Codes;
297      pragma Import
298        (C,
299         Variable_Delete_Base,
300         "rtems_task_variable_delete");
301      Task_Variable_Base : aliased RTEMS.Address;
302   begin
303
304      Result        := Variable_Delete_Base (ID, Task_Variable_Base'Access);
305      Task_Variable := Task_Variable_Base;
306
307   end Variable_Delete;
308
309   procedure Wake_When
310     (Time_Buffer : in RTEMS.Time_Of_Day;
311      Result      : out RTEMS.Status_Codes)
312   is
313      function Wake_When_Base
314        (Time_Buffer : RTEMS.Time_Of_Day)
315         return        RTEMS.Status_Codes;
316      pragma Import (C, Wake_When_Base, "rtems_task_wake_when");
317   begin
318
319      Result := Wake_When_Base (Time_Buffer);
320
321   end Wake_When;
322
323   procedure Wake_After
324     (Ticks  : in RTEMS.Interval;
325      Result : out RTEMS.Status_Codes)
326   is
327      function Wake_After_Base
328        (Ticks : RTEMS.Interval)
329         return  RTEMS.Status_Codes;
330      pragma Import (C, Wake_After_Base, "rtems_task_wake_after");
331   begin
332
333      Result := Wake_After_Base (Ticks);
334
335   end Wake_After;
336
337end RTEMS.Tasks;
Note: See TracBrowser for help on using the repository browser.