source: rtems/testsuites/ada/sptests/sp06/sptest.adb @ 76bd25e

5
Last change on this file since 76bd25e was f6c9334d, checked in by Sebastian Huber <sebastian.huber@…>, on 12/01/17 at 07:51:17

ada: Add standard test begin/end message

  • 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-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;
24
25package body SPTEST is
26
27--
28--  INIT
29--
30
31   procedure INIT (
32      ARGUMENT : in     RTEMS.TASKS.ARGUMENT
33   ) is
34      pragma Unreferenced(ARGUMENT);
35      STATUS            : RTEMS.STATUS_CODES;
36      PREVIOUS_PRIORITY : RTEMS.TASKS.PRIORITY;
37   begin
38
39      TEXT_IO.NEW_LINE( 2 );
40      TEST_SUPPORT.ADA_TEST_BEGIN;
41
42      SPTEST.TASK_NAME( 1 ) := RTEMS.BUILD_NAME(  'T', 'A', '1', ' ' );
43      SPTEST.TASK_NAME( 2 ) := RTEMS.BUILD_NAME(  'T', 'A', '2', ' ' );
44      SPTEST.TASK_NAME( 3 ) := RTEMS.BUILD_NAME(  'T', 'A', '3', ' ' );
45
46      SPTEST.ARGUMENT := 0;
47      SPTEST.RESTART_ARGUMENT := 1;
48
49      RTEMS.TASKS.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.TASKS.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.TASKS.CREATE(
72         SPTEST.TASK_NAME( 3 ),
73         10,
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.TASKS.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.TASKS.START(
91         SPTEST.TASK_ID( 2 ),
92         SPTEST.TASK_2'ACCESS,
93         SPTEST.ARGUMENT,
94         STATUS
95      );
96      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_START OF TA2" );
97
98      RTEMS.TASKS.START(
99         SPTEST.TASK_ID( 3 ),
100         SPTEST.TASK_3'ACCESS,
101         SPTEST.ARGUMENT,
102         STATUS
103      );
104      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_START OF TA3" );
105
106      RTEMS.TASKS.SET_PRIORITY(
107         SPTEST.TASK_ID( 3 ),
108         5,
109         PREVIOUS_PRIORITY,
110         STATUS
111      );
112      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_SET_PRIORITY OF TA3" );
113
114      RTEMS.TASKS.DELETE( RTEMS.SELF, STATUS );
115      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_DELETE OF SELF" );
116
117   end INIT;
118
119--
120--  TASK_1
121--
122
123   procedure TASK_1 (
124      ARGUMENT : in     RTEMS.TASKS.ARGUMENT
125   ) is
126      PASS   : RTEMS.UNSIGNED32;
127      STATUS : RTEMS.STATUS_CODES;
128   begin
129
130      TEXT_IO.PUT_LINE( "TA1 - is beginning to run" );
131
132      PASS := ARGUMENT + 1;
133
134      if PASS = 5 then
135         TEST_SUPPORT.ADA_TEST_END;
136         RTEMS.SHUTDOWN_EXECUTIVE( 0 );
137      end if;
138
139      if PASS = 1 then
140         TEXT_IO.PUT_LINE( "TA1 - restarting TA3" );
141         RTEMS.TASKS.RESTART(
142            SPTEST.TASK_ID( 3 ),
143            SPTEST.RESTART_ARGUMENT,
144            STATUS
145         );
146         TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_RESTART OF TA3" );
147
148         RTEMS.TASKS.WAKE_AFTER( 2 * TEST_SUPPORT.TICKS_PER_SECOND, STATUS );
149         TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_WAKE_AFTER" );
150
151      end if;
152
153      RTEMS.TASKS.WAKE_AFTER( TEST_SUPPORT.TICKS_PER_SECOND, STATUS );
154      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_WAKE_AFTER" );
155
156      TEXT_IO.PUT_LINE( "TA1 - task_restart - restarting TA2" );
157      RTEMS.TASKS.RESTART(
158         SPTEST.TASK_ID( 2 ),
159         SPTEST.RESTART_ARGUMENT,
160         STATUS
161      );
162      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_RESTART OF TA2" );
163
164      RTEMS.TASKS.WAKE_AFTER( TEST_SUPPORT.TICKS_PER_SECOND, STATUS );
165      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_WAKE_AFTER" );
166
167      TEXT_IO.PUT_LINE( "TA1 - task_restart - restarting self" );
168      RTEMS.TASKS.RESTART( SPTEST.TASK_ID( 1 ), PASS, STATUS );
169      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_RESTART OF SELF" );
170
171   end TASK_1;
172
173--
174--  TASK_2
175--
176
177   procedure TASK_2 (
178      ARGUMENT : in     RTEMS.TASKS.ARGUMENT
179   ) is
180      STATUS : RTEMS.STATUS_CODES;
181   begin
182
183      TEXT_IO.PUT_LINE( "TA2 - is beginning to run" );
184
185      if ARGUMENT = SPTEST.ARGUMENT then
186         RTEMS.TASKS.WAKE_AFTER( 2 * TEST_SUPPORT.TICKS_PER_SECOND, STATUS );
187         TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_WAKE_AFTER" );
188      end if;
189
190      loop
191
192         TEXT_IO.PUT_LINE( "TA2 - task_wake_after - sleep 1/2 second" );
193         RTEMS.TASKS.WAKE_AFTER( TEST_SUPPORT.TICKS_PER_SECOND / 2, STATUS );
194         TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_WAKE_AFTER" );
195
196      end loop;
197
198   end TASK_2;
199
200--
201--  TASK_3
202--
203
204   procedure TASK_3 (
205      ARGUMENT : in     RTEMS.TASKS.ARGUMENT
206   ) is
207      pragma Unreferenced(ARGUMENT);
208      STATUS : RTEMS.STATUS_CODES;
209   begin
210
211      RTEMS.TASKS.DELETE( RTEMS.SELF, STATUS );
212      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_DELETE OF SELF" );
213
214   end TASK_3;
215
216end SPTEST;
Note: See TracBrowser for help on using the repository browser.