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

5
Last change on this file since 0ab4fb7 was 1d40d81b, checked in by Sebastian Huber <sebastian.huber@…>, on 05/03/16 at 05:38:19

rtems: Remove task variables

Update #2494.
Update #2555.

  • Property mode set to 100644
File size: 6.0 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 Wake_When
207     (Time_Buffer : in RTEMS.Time_Of_Day;
208      Result      : out RTEMS.Status_Codes)
209   is
210      function Wake_When_Base
211        (Time_Buffer : RTEMS.Time_Of_Day)
212         return        RTEMS.Status_Codes;
213      pragma Import (C, Wake_When_Base, "rtems_task_wake_when");
214   begin
215
216      Result := Wake_When_Base (Time_Buffer);
217
218   end Wake_When;
219
220   procedure Wake_After
221     (Ticks  : in RTEMS.Interval;
222      Result : out RTEMS.Status_Codes)
223   is
224      function Wake_After_Base
225        (Ticks : RTEMS.Interval)
226         return  RTEMS.Status_Codes;
227      pragma Import (C, Wake_After_Base, "rtems_task_wake_after");
228   begin
229
230      Result := Wake_After_Base (Ticks);
231
232   end Wake_After;
233
234end RTEMS.Tasks;
Note: See TracBrowser for help on using the repository browser.