source: rtems/c/src/ada-tests/sptests/sp05/sptest.adb @ 48bfd992

4.104.114.84.95
Last change on this file since 48bfd992 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.8 KB
Line 
1--
2--  SPTEST / BODY
3--
4--  DESCRIPTION:
5--
6--  This package is the implementation of Test 5 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   begin
41
42      TEXT_IO.NEW_LINE( 2 );
43      TEXT_IO.PUT_LINE( "*** TEST 5 ***" );
44
45      SPTEST.TASK_NAME( 1 ) := RTEMS.BUILD_NAME(  'T', 'A', '1', ' ' );
46      SPTEST.TASK_NAME( 2 ) := RTEMS.BUILD_NAME(  'T', 'A', '2', ' ' );
47      SPTEST.TASK_NAME( 3 ) := RTEMS.BUILD_NAME(  'T', 'A', '3', ' ' );
48
49      RTEMS.TASK_CREATE(
50         SPTEST.TASK_NAME( 1 ),
51         1,
52         2048,
53         RTEMS.DEFAULT_MODES,
54         RTEMS.DEFAULT_ATTRIBUTES,
55         SPTEST.TASK_ID( 1 ),
56         STATUS
57      );
58      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_CREATE OF TA1" );
59
60      RTEMS.TASK_CREATE(
61         SPTEST.TASK_NAME( 2 ),
62         1,
63         2048,
64         RTEMS.DEFAULT_MODES,
65         RTEMS.DEFAULT_ATTRIBUTES,
66         SPTEST.TASK_ID( 2 ),
67         STATUS
68      );
69      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_CREATE OF TA2" );
70
71      RTEMS.TASK_CREATE(
72         SPTEST.TASK_NAME( 3 ),
73         1,
74         2048,
75         RTEMS.DEFAULT_MODES,
76         RTEMS.DEFAULT_ATTRIBUTES,
77         SPTEST.TASK_ID( 3 ),
78         STATUS
79      );
80      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_CREATE OF TA3" );
81
82      RTEMS.TASK_START(
83         SPTEST.TASK_ID( 1 ),
84         SPTEST.TASK_1'ACCESS,
85         0,
86         STATUS
87      );
88      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_START OF TA1" );
89
90      RTEMS.TASK_START(
91         SPTEST.TASK_ID( 2 ),
92         SPTEST.TASK_2'ACCESS,
93         0,
94         STATUS
95      );
96      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_START OF TA2" );
97
98      RTEMS.TASK_START(
99         SPTEST.TASK_ID( 3 ),
100         SPTEST.TASK_3'ACCESS,
101         0,
102         STATUS
103      );
104      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_START OF TA3" );
105
106      RTEMS.TASK_DELETE( RTEMS.SELF, STATUS );
107      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_DELETE OF SELF" );
108
109   end INIT;
110
111--PAGE
112--
113--  TASK_1
114--
115
116   procedure TASK_1 (
117      ARGUMENT : in     RTEMS.TASK_ARGUMENT
118   ) is
119      TID2   : RTEMS.ID;
120      TID3   : RTEMS.ID;
121      PASS   : RTEMS.UNSIGNED32;
122      STATUS : RTEMS.STATUS_CODES;
123   begin
124
125      RTEMS.TASK_IDENT(
126         SPTEST.TASK_NAME( 2 ),
127         1,
128         TID2,
129         STATUS
130      );
131      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_IDENT OF TA2" );
132   
133      RTEMS.TASK_IDENT(
134         SPTEST.TASK_NAME( 3 ),
135         1,
136         TID3,
137         STATUS
138      );
139      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_IDENT OF TA3" );
140   
141      for PASS in 1 .. 3
142      loop
143
144         TEXT_IO.PUT_LINE( "TA1 - task_wake_after - sleep 5 seconds" );
145         RTEMS.TASK_WAKE_AFTER( 5 * TEST_SUPPORT.TICKS_PER_SECOND, STATUS );
146         TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_WAKE_AFTER OF TA1" );
147         
148         TEXT_IO.PUT_LINE( "TA1 - task_suspend - suspend TA3" );
149         RTEMS.TASK_SUSPEND( TID3, STATUS );
150         if PASS = 1 then
151           TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
152              STATUS,
153              RTEMS.ALREADY_SUSPENDED,
154              "TASK_SUSPEND OF TA3"
155           );
156         else
157           TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_SUSPEND OF TA3" );
158         end if;
159         
160         TEXT_IO.PUT_LINE( "TA1 - task_resume - resume TA2" );
161         RTEMS.TASK_RESUME( TID2, STATUS );
162         TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_RESUME OF TA2" );
163         
164         TEXT_IO.PUT_LINE( "TA1 - task_wake_after - sleep 5 seconds" );
165         RTEMS.TASK_WAKE_AFTER( 5 * TEST_SUPPORT.TICKS_PER_SECOND, STATUS );
166         TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_WAKE_AFTER" );
167         
168         TEXT_IO.PUT_LINE( "TA1 - task_suspend - suspend TA2" );
169         RTEMS.TASK_SUSPEND( TID2, STATUS );
170         TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_SUSPEND OF TA2" );
171         
172         TEXT_IO.PUT_LINE( "TA1 - task_resume - resume TA3" );
173         RTEMS.TASK_RESUME( TID3, STATUS );
174         TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_RESUME OF TA3" );
175         
176      end loop;
177
178      TEXT_IO.PUT_LINE( "*** END OF TEST 5 ***" );
179      RTEMS.SHUTDOWN_EXECUTIVE( 0 );
180
181   end TASK_1;
182
183--PAGE
184--
185--  TASK_2
186--
187
188   procedure TASK_2 (
189      ARGUMENT : in     RTEMS.TASK_ARGUMENT
190   ) is
191      STATUS : RTEMS.STATUS_CODES;
192   begin
193
194      TEXT_IO.PUT_LINE( "TA2 - task_suspend - suspend self" );
195      RTEMS.TASK_SUSPEND( RTEMS.SELF, STATUS );
196      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_SUSPEND OF TA2" );
197
198      loop
199         TEXT_IO.PUT_LINE( "TA2 - task_wake_after - sleep 1 second" );
200         RTEMS.TASK_WAKE_AFTER( TEST_SUPPORT.TICKS_PER_SECOND, STATUS );
201         TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_WAKE_AFTER OF TA2" );
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      TEXT_IO.PUT_LINE( "TA3 - task_suspend - suspend self" );
218      RTEMS.TASK_SUSPEND( RTEMS.SELF, STATUS );
219      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_SUSPEND OF TA3" );
220
221      loop
222         TEXT_IO.PUT_LINE( "TA3 - task_wake_after - sleep 1 second" );
223         RTEMS.TASK_WAKE_AFTER( TEST_SUPPORT.TICKS_PER_SECOND, STATUS );
224         TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_WAKE_AFTER OF TA3" );
225      end loop;
226         
227   end TASK_3;
228
229end SPTEST;
Note: See TracBrowser for help on using the repository browser.