source: rtems/testsuites/ada/sptests/sp08/sptest.adb @ ee537ea

5
Last change on this file since ee537ea was ee537ea, checked in by Sebastian Huber <sebastian.huber@…>, on 10/12/17 at 08:00:10

ada-tests: Move to testsuites/ada

This solves a build dependency issue, e.g. building tests before
librtemsbsp.a exists.

Close #3079.

  • Property mode set to 100644
File size: 8.4 KB
Line 
1--
2--  SPTEST / BODY
3--
4--  DESCRIPTION:
5--
6--  This package is the implementation of Test 8 of the RTEMS
7--  Single Processor Test Suite.
8--
9--  DEPENDENCIES:
10--
11-- 
12--
13--  COPYRIGHT (c) 1989-2011.
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
21with INTERFACES; use INTERFACES;
22with TEST_SUPPORT;
23with TEXT_IO;
24with UNSIGNED32_IO;
25
26package body SPTEST is
27
28--
29--  INIT
30--
31
32   procedure INIT (
33      ARGUMENT : in     RTEMS.TASKS.ARGUMENT
34   ) is
35      pragma Unreferenced(ARGUMENT);
36      STATUS : RTEMS.STATUS_CODES;
37   begin
38
39      TEXT_IO.NEW_LINE( 2 );
40      TEXT_IO.PUT_LINE( "*** TEST 8 ***" );
41
42      SPTEST.TASK_NAME( 1 ) := RTEMS.BUILD_NAME(  'T', 'A', '1', ' ' );
43
44      RTEMS.TASKS.CREATE(
45         SPTEST.TASK_NAME( 1 ),
46         1,
47         2048,
48         RTEMS.DEFAULT_MODES,
49         RTEMS.DEFAULT_ATTRIBUTES,
50         SPTEST.TASK_ID( 1 ),
51         STATUS
52      );
53      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_CREATE OF TA1" );
54
55      RTEMS.TASKS.START(
56         SPTEST.TASK_ID( 1 ),
57         SPTEST.TASK_1'ACCESS,
58         0,
59         STATUS
60      );
61      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_START OF TA1" );
62
63      RTEMS.TASKS.DELETE( RTEMS.SELF, STATUS );
64      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_DELETE OF SELF" );
65
66   end INIT;
67
68--
69--  PUT_MODE
70--
71
72   procedure PUT_MODE(
73      COMMENT     : in    STRING;
74      OUTPUT_MODE : in    RTEMS.MODE
75   ) is
76   begin
77
78      TEXT_IO.PUT( COMMENT );
79      UNSIGNED32_IO.PUT( OUTPUT_MODE, BASE => 16, WIDTH => 8 );
80      TEXT_IO.NEW_LINE;
81
82   end PUT_MODE;
83
84--
85--  TASK_1
86--
87
88   procedure TASK_1 (
89      ARGUMENT : in     RTEMS.TASKS.ARGUMENT
90   ) is
91      pragma Unreferenced(ARGUMENT);
92      PREVIOUS_MODE : RTEMS.MODE;
93      STATUS : RTEMS.STATUS_CODES;
94   begin
95
96-- BEGINNING OF ASR
97
98      RTEMS.TASKS.MODE(
99         RTEMS.ASR,
100         RTEMS.ASR_MASK,
101         PREVIOUS_MODE,
102         STATUS
103      );
104      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_MODE" );
105      SPTEST.PUT_MODE(
106         "TA1 - task_mode - ASR                  - previous mode: ",
107         PREVIOUS_MODE
108      );
109   
110      RTEMS.TASKS.MODE(
111         RTEMS.NO_ASR,
112         RTEMS.ASR_MASK,
113         PREVIOUS_MODE,
114         STATUS
115      );
116      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_MODE" );
117      SPTEST.PUT_MODE(
118         "TA1 - task_mode - NO_ASR               - previous mode: ",
119         PREVIOUS_MODE
120      );
121   
122      RTEMS.TASKS.MODE(
123         RTEMS.NO_ASR,
124         RTEMS.ASR_MASK,
125         PREVIOUS_MODE,
126         STATUS
127      );
128      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_MODE" );
129      SPTEST.PUT_MODE(
130         "TA1 - task_mode - NO_ASR               - previous mode: ",
131         PREVIOUS_MODE
132      );
133   
134      RTEMS.TASKS.MODE(
135         RTEMS.ASR,
136         RTEMS.ASR_MASK,
137         PREVIOUS_MODE,
138         STATUS
139      );
140      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_MODE" );
141      SPTEST.PUT_MODE(
142         "TA1 - task_mode - ASR                  - previous mode: ",
143         PREVIOUS_MODE
144      );
145   
146-- END OF ASR
147
148-- BEGINNING OF TIMESLICE
149
150      RTEMS.TASKS.MODE(
151         RTEMS.NO_TIMESLICE,
152         RTEMS.TIMESLICE_MASK,
153         PREVIOUS_MODE,
154         STATUS
155      );
156      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_MODE" );
157      SPTEST.PUT_MODE(
158         "TA1 - task_mode - NO_TIMESLICE         - previous mode: ",
159         PREVIOUS_MODE
160      );
161   
162      RTEMS.TASKS.MODE(
163         RTEMS.TIMESLICE,
164         RTEMS.TIMESLICE_MASK,
165         PREVIOUS_MODE,
166         STATUS
167      );
168      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_MODE" );
169      SPTEST.PUT_MODE(
170         "TA1 - task_mode - TIMESLICE            - previous mode: ",
171         PREVIOUS_MODE
172      );
173   
174      RTEMS.TASKS.MODE(
175         RTEMS.TIMESLICE,
176         RTEMS.TIMESLICE_MASK,
177         PREVIOUS_MODE,
178         STATUS
179      );
180      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_MODE" );
181      SPTEST.PUT_MODE(
182         "TA1 - task_mode - TIMESLICE            - previous mode: ",
183         PREVIOUS_MODE
184      );
185   
186      RTEMS.TASKS.MODE(
187         RTEMS.NO_TIMESLICE,
188         RTEMS.TIMESLICE_MASK,
189         PREVIOUS_MODE,
190         STATUS
191      );
192      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_MODE" );
193      SPTEST.PUT_MODE(
194         "TA1 - task_mode - NO_TIMESLICE         - previous mode: ",
195         PREVIOUS_MODE
196      );
197   
198-- END OF TIMESLICE
199
200-- BEGINNING OF PREEMPT
201
202      RTEMS.TASKS.MODE(
203         RTEMS.PREEMPT,
204         RTEMS.PREEMPT_MASK,
205         PREVIOUS_MODE,
206         STATUS
207      );
208      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_MODE" );
209      SPTEST.PUT_MODE(
210         "TA1 - task_mode - PREEMPT              - previous mode: ",
211         PREVIOUS_MODE
212      );
213   
214      RTEMS.TASKS.MODE(
215         RTEMS.NO_PREEMPT,
216         RTEMS.PREEMPT_MASK,
217         PREVIOUS_MODE,
218         STATUS
219      );
220      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_MODE" );
221      SPTEST.PUT_MODE(
222         "TA1 - task_mode - NO_PREEMPT           - previous mode: ",
223         PREVIOUS_MODE
224      );
225   
226      RTEMS.TASKS.MODE(
227         RTEMS.NO_PREEMPT,
228         RTEMS.PREEMPT_MASK,
229         PREVIOUS_MODE,
230         STATUS
231      );
232      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_MODE" );
233      SPTEST.PUT_MODE(
234         "TA1 - task_mode - NO_PREEMPT           - previous mode: ",
235         PREVIOUS_MODE
236      );
237   
238      RTEMS.TASKS.MODE(
239         RTEMS.PREEMPT,
240         RTEMS.PREEMPT_MASK,
241         PREVIOUS_MODE,
242         STATUS
243      );
244      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_MODE" );
245      SPTEST.PUT_MODE(
246         "TA1 - task_mode - PREEMPT              - previous mode: ",
247         PREVIOUS_MODE
248      );
249   
250-- END OF PREEMPT
251
252-- BEGINNING OF INTERRUPT_LEVEL
253
254      RTEMS.TASKS.MODE(
255         RTEMS.INTERRUPT_LEVEL( 3 ),
256         RTEMS.INTERRUPT_MASK,
257         PREVIOUS_MODE,
258         STATUS
259      );
260      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_MODE" );
261      SPTEST.PUT_MODE(
262         "TA1 - task_mode - INTERRUPT_LEVEL( 3 ) - previous mode: ",
263         PREVIOUS_MODE
264      );
265   
266      RTEMS.TASKS.MODE(
267         RTEMS.INTERRUPT_LEVEL( 5 ),
268         RTEMS.INTERRUPT_MASK,
269         PREVIOUS_MODE,
270         STATUS
271      );
272      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_MODE" );
273      SPTEST.PUT_MODE(
274         "TA1 - task_mode - INTERRUPT_LEVEL( 5 ) - previous mode: ",
275         PREVIOUS_MODE
276      );
277   
278-- END OF INTERRUPT_LEVEL
279
280-- BEGINNING OF COMBINATIONS
281
282      RTEMS.TASKS.MODE(
283         RTEMS.INTERRUPT_LEVEL( 3 ) + RTEMS.NO_ASR +
284            RTEMS.TIMESLICE + RTEMS.NO_PREEMPT,
285         RTEMS.INTERRUPT_MASK + RTEMS.ASR_MASK +
286            RTEMS.TIMESLICE_MASK + RTEMS.PREEMPT_MASK,
287         PREVIOUS_MODE,
288         STATUS
289      );
290      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_MODE" );
291      SPTEST.PUT_MODE(
292         "TA1 - task_mode - set all modes        - previous mode: ",
293         PREVIOUS_MODE
294      );
295   
296      RTEMS.TASKS.MODE(
297         RTEMS.INTERRUPT_LEVEL( 3 ) + RTEMS.NO_ASR +
298            RTEMS.TIMESLICE + RTEMS.NO_PREEMPT,
299         RTEMS.INTERRUPT_MASK + RTEMS.ASR_MASK +
300            RTEMS.TIMESLICE_MASK + RTEMS.PREEMPT_MASK,
301         PREVIOUS_MODE,
302         STATUS
303      );
304      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_MODE" );
305      SPTEST.PUT_MODE(
306         "TA1 - task_mode - set all modes        - previous mode: ",
307         PREVIOUS_MODE
308      );
309   
310      RTEMS.TASKS.MODE(
311         RTEMS.INTERRUPT_LEVEL( 0 ) + RTEMS.ASR +
312            RTEMS.NO_TIMESLICE + RTEMS.PREEMPT,
313         RTEMS.INTERRUPT_MASK + RTEMS.ASR_MASK +
314            RTEMS.TIMESLICE_MASK + RTEMS.PREEMPT_MASK,
315         PREVIOUS_MODE,
316         STATUS
317      );
318      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_MODE" );
319      SPTEST.PUT_MODE(
320         "TA1 - task_mode - clear all modes      - previous mode: ",
321         PREVIOUS_MODE
322      );
323   
324-- END OF COMBINATIONS
325
326-- BEGINNING OF CURRENT MODE
327
328      RTEMS.TASKS.MODE(
329         RTEMS.CURRENT_MODE,
330         RTEMS.CURRENT_MODE,
331         PREVIOUS_MODE,
332         STATUS
333      );
334      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_MODE" );
335      SPTEST.PUT_MODE(
336         "TA1 - task_mode - get current mode     - previous mode: ",
337         PREVIOUS_MODE
338      );
339   
340-- END OF CURRENT MODE
341
342      TEXT_IO.PUT_LINE( "*** END OF TEST 8 ***" );
343      RTEMS.SHUTDOWN_EXECUTIVE( 0 );
344   end TASK_1;
345
346end SPTEST;
Note: See TracBrowser for help on using the repository browser.