source: rtems/c/src/ada-tests/sptests/sp08/sptest.adb @ 2af6056

4.104.114.84.95
Last change on this file since 2af6056 was bf9ae83, checked in by Joel Sherrill <joel.sherrill@…>, on 06/02/97 at 20:32:11

modified copyright notice to be the same as RTEMS 4.0.0.

changed the CVS ID string to be a "development" version.

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