source: rtems/c/src/ada-tests/sptests/sp06/sptest.adb @ 82870ab

4.104.114.84.95
Last change on this file since 82870ab 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: 5.3 KB
Line 
1--
2--  SPTEST / BODY
3--
4--  DESCRIPTION:
5--
6--  This package is the implementation of Test 6 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;
28
29package body SPTEST is
30
31--PAGE
32--
33--  INIT
34--
35
36   procedure INIT (
37      ARGUMENT : in     RTEMS.TASK_ARGUMENT
38   ) is
39      STATUS            : RTEMS.STATUS_CODES;
40      PREVIOUS_PRIORITY : RTEMS.TASK_PRIORITY;
41   begin
42
43      TEXT_IO.NEW_LINE( 2 );
44      TEXT_IO.PUT_LINE( "*** TEST 6 ***" );
45
46      SPTEST.TASK_NAME( 1 ) := RTEMS.BUILD_NAME(  'T', 'A', '1', ' ' );
47      SPTEST.TASK_NAME( 2 ) := RTEMS.BUILD_NAME(  'T', 'A', '2', ' ' );
48      SPTEST.TASK_NAME( 3 ) := RTEMS.BUILD_NAME(  'T', 'A', '3', ' ' );
49
50      SPTEST.ARGUMENT := 0;
51      SPTEST.RESTART_ARGUMENT := 1;
52
53      RTEMS.TASK_CREATE(
54         SPTEST.TASK_NAME( 1 ),
55         1,
56         2048,
57         RTEMS.DEFAULT_MODES,
58         RTEMS.DEFAULT_ATTRIBUTES,
59         SPTEST.TASK_ID( 1 ),
60         STATUS
61      );
62      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_CREATE OF TA1" );
63
64      RTEMS.TASK_CREATE(
65         SPTEST.TASK_NAME( 2 ),
66         1,
67         2048,
68         RTEMS.DEFAULT_MODES,
69         RTEMS.DEFAULT_ATTRIBUTES,
70         SPTEST.TASK_ID( 2 ),
71         STATUS
72      );
73      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_CREATE OF TA2" );
74
75      RTEMS.TASK_CREATE(
76         SPTEST.TASK_NAME( 3 ),
77         10,
78         2048,
79         RTEMS.DEFAULT_MODES,
80         RTEMS.DEFAULT_ATTRIBUTES,
81         SPTEST.TASK_ID( 3 ),
82         STATUS
83      );
84      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_CREATE OF TA3" );
85
86      RTEMS.TASK_START(
87         SPTEST.TASK_ID( 1 ),
88         SPTEST.TASK_1'ACCESS,
89         0,
90         STATUS
91      );
92      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_START OF TA1" );
93
94      RTEMS.TASK_START(
95         SPTEST.TASK_ID( 2 ),
96         SPTEST.TASK_2'ACCESS,
97         SPTEST.ARGUMENT,
98         STATUS
99      );
100      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_START OF TA2" );
101
102      RTEMS.TASK_START(
103         SPTEST.TASK_ID( 3 ),
104         SPTEST.TASK_3'ACCESS,
105         SPTEST.ARGUMENT,
106         STATUS
107      );
108      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_START OF TA3" );
109
110      RTEMS.TASK_SET_PRIORITY(
111         SPTEST.TASK_ID( 3 ),
112         5,
113         PREVIOUS_PRIORITY,
114         STATUS
115      );
116      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_SET_PRIORITY OF TA3" );
117
118      RTEMS.TASK_DELETE( RTEMS.SELF, STATUS );
119      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_DELETE OF SELF" );
120
121   end INIT;
122
123--PAGE
124--
125--  TASK_1
126--
127
128   procedure TASK_1 (
129      ARGUMENT : in     RTEMS.TASK_ARGUMENT
130   ) is
131      PASS   : RTEMS.UNSIGNED32;
132      STATUS : RTEMS.STATUS_CODES;
133   begin
134
135      TEXT_IO.PUT_LINE( "TA1 - is beginning to run" );
136
137      PASS := ARGUMENT + 1;
138
139      if PASS = 5 then
140         TEXT_IO.PUT_LINE( "*** END OF TEST 6 ***" );
141         RTEMS.SHUTDOWN_EXECUTIVE( 0 );
142      end if;
143
144      if PASS = 1 then
145         TEXT_IO.PUT_LINE( "TA1 - restarting TA3" );
146         RTEMS.TASK_RESTART(
147            SPTEST.TASK_ID( 3 ),
148            SPTEST.RESTART_ARGUMENT,
149            STATUS
150         );
151         TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_RESTART OF TA3" );
152
153         RTEMS.TASK_WAKE_AFTER( 2 * TEST_SUPPORT.TICKS_PER_SECOND, STATUS );
154         TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_WAKE_AFTER" );
155
156      end if;
157
158      RTEMS.TASK_WAKE_AFTER( TEST_SUPPORT.TICKS_PER_SECOND, STATUS );
159      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_WAKE_AFTER" );
160
161      TEXT_IO.PUT_LINE( "TA1 - task_restart - restarting TA2" );
162      RTEMS.TASK_RESTART(
163         SPTEST.TASK_ID( 2 ),
164         SPTEST.RESTART_ARGUMENT,
165         STATUS
166      );
167      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_RESTART OF TA2" );
168
169      RTEMS.TASK_WAKE_AFTER( TEST_SUPPORT.TICKS_PER_SECOND, STATUS );
170      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_WAKE_AFTER" );
171
172      TEXT_IO.PUT_LINE( "TA1 - task_restart - restarting self" );
173      RTEMS.TASK_RESTART( SPTEST.TASK_ID( 1 ), PASS, STATUS );
174      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_RESTART OF SELF" );
175
176   end TASK_1;
177
178--PAGE
179--
180--  TASK_2
181--
182
183   procedure TASK_2 (
184      ARGUMENT : in     RTEMS.TASK_ARGUMENT
185   ) is
186      STATUS : RTEMS.STATUS_CODES;
187   begin
188
189      TEXT_IO.PUT_LINE( "TA2 - is beginning to run" );
190
191      if ARGUMENT = SPTEST.ARGUMENT then
192         RTEMS.TASK_WAKE_AFTER( 2 * TEST_SUPPORT.TICKS_PER_SECOND, STATUS );
193         TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_WAKE_AFTER" );
194      end if;
195
196      loop
197
198         TEXT_IO.PUT_LINE( "TA2 - task_wake_after - sleep 1/2 second" );
199         RTEMS.TASK_WAKE_AFTER( TEST_SUPPORT.TICKS_PER_SECOND / 2, STATUS );
200         TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_WAKE_AFTER" );
201
202      end loop;
203
204   end TASK_2;
205
206--PAGE
207--
208--  TASK_3
209--
210
211   procedure TASK_3 (
212      ARGUMENT : in     RTEMS.TASK_ARGUMENT
213   ) is
214      STATUS : RTEMS.STATUS_CODES;
215   begin
216
217      RTEMS.TASK_DELETE( RTEMS.SELF, STATUS );
218      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_DELETE OF SELF" );
219
220   end TASK_3;
221
222end SPTEST;
Note: See TracBrowser for help on using the repository browser.