source: rtems/c/src/ada-tests/sptests/sp04/sptest.adb @ 3c4d8cd1

4.115
Last change on this file since 3c4d8cd1 was 3c4d8cd1, checked in by Joel Sherrill <joel.sherrill@…>, on 02/16/11 at 15:53:16

2011-02-16 Joel Sherrill <joel.sherrill@…>

  • ada-tests/mptests/mp01/mp01.adb, ada-tests/mptests/mp01/mptest.adb, ada-tests/mptests/mp01/mptest.ads, ada-tests/mptests/mp01/node1/mp01_node1.adb, ada-tests/mptests/mp01/node2/mp01_node2.adb, ada-tests/mptests/mp02/mptest.adb, ada-tests/mptests/mp02/mptest.ads, ada-tests/mptests/mp02/node1/mp02_node1.adb, ada-tests/mptests/mp02/node2/mp02_node2.adb, ada-tests/mptests/mp03/mptest.adb, ada-tests/mptests/mp03/mptest.ads, ada-tests/mptests/mp03/node1/mp03_node1.adb, ada-tests/mptests/mp03/node2/mp03_node2.adb, ada-tests/mptests/mp04/mptest.adb, ada-tests/mptests/mp04/mptest.ads, ada-tests/mptests/mp04/node1/mp04_node1.adb, ada-tests/mptests/mp04/node2/mp04_node2.adb, ada-tests/mptests/mp05/mptest.adb, ada-tests/mptests/mp05/mptest.ads, ada-tests/mptests/mp05/node1/mp05_node1.adb, ada-tests/mptests/mp05/node2/mp05_node2.adb, ada-tests/mptests/mp06/mptest.adb, ada-tests/mptests/mp06/mptest.ads, ada-tests/mptests/mp06/node1/mp06_node1.adb, ada-tests/mptests/mp06/node2/mp06_node2.adb, ada-tests/mptests/mp07/mptest.adb, ada-tests/mptests/mp07/mptest.ads, ada-tests/mptests/mp07/node1/mp07_node1.adb, ada-tests/mptests/mp07/node2/mp07_node2.adb, ada-tests/mptests/mp08/mptest.adb, ada-tests/mptests/mp08/mptest.ads, ada-tests/mptests/mp08/node1/mp08_node1.adb, ada-tests/mptests/mp08/node2/mp08_node2.adb, ada-tests/mptests/mp09/mptest.adb, ada-tests/mptests/mp09/mptest.ads, ada-tests/mptests/mp09/node1/mp09_node1.adb, ada-tests/mptests/mp09/node2/mp09_node2.adb, ada-tests/mptests/mp10/mptest.adb, ada-tests/mptests/mp10/mptest.ads, ada-tests/mptests/mp10/node1/mp10_node1.adb, ada-tests/mptests/mp10/node2/mp10_node2.adb, ada-tests/mptests/mp11/mptest.adb, ada-tests/mptests/mp11/mptest.ads, ada-tests/mptests/mp11/node1/mp11_node1.adb, ada-tests/mptests/mp11/node2/mp11_node2.adb, ada-tests/mptests/mp12/mptest.adb, ada-tests/mptests/mp12/mptest.ads, ada-tests/mptests/mp12/node1/mp12_node1.adb, ada-tests/mptests/mp12/node2/mp12_node2.adb, ada-tests/mptests/mp13/mptest.adb, ada-tests/mptests/mp13/mptest.ads, ada-tests/mptests/mp13/node1/mp13_node1.adb, ada-tests/mptests/mp13/node2/mp13_node2.adb, ada-tests/mptests/mp14/mptest.adb, ada-tests/mptests/mp14/mptest.ads, ada-tests/mptests/mp14/node1/mp14_node1.adb, ada-tests/mptests/mp14/node2/mp14_node2.adb, ada-tests/samples/base_mp/mptest.adb, ada-tests/samples/base_mp/mptest.ads, ada-tests/samples/base_sp/base_sp.adb, ada-tests/samples/base_sp/sptest.adb, ada-tests/samples/base_sp/sptest.ads, ada-tests/samples/hello/hello.adb, ada-tests/samples/hello/sptest.adb, ada-tests/samples/hello/sptest.ads, ada-tests/samples/nsecs/nsecs.adb, ada-tests/samples/nsecs/sptest.adb, ada-tests/samples/nsecs/sptest.ads, ada-tests/samples/ticker/sptest.adb, ada-tests/samples/ticker/sptest.ads, ada-tests/samples/ticker/ticker.adb, ada-tests/sptests/sp01/sp01.adb, ada-tests/sptests/sp01/sptest.adb, ada-tests/sptests/sp01/sptest.ads, ada-tests/sptests/sp02/sp02.adb, ada-tests/sptests/sp02/sptest.adb, ada-tests/sptests/sp02/sptest.ads, ada-tests/sptests/sp03/sp03.adb, ada-tests/sptests/sp03/sptest.adb, ada-tests/sptests/sp03/sptest.ads, ada-tests/sptests/sp04/sp04.adb, ada-tests/sptests/sp04/sptest.adb, ada-tests/sptests/sp04/sptest.ads, ada-tests/sptests/sp05/sp05.adb, ada-tests/sptests/sp05/sptest.adb, ada-tests/sptests/sp05/sptest.ads, ada-tests/sptests/sp06/sp06.adb, ada-tests/sptests/sp06/sptest.adb, ada-tests/sptests/sp06/sptest.ads, ada-tests/sptests/sp07/sp07.adb, ada-tests/sptests/sp07/sptest.adb, ada-tests/sptests/sp07/sptest.ads, ada-tests/sptests/sp08/sp08.adb, ada-tests/sptests/sp08/sptest.adb, ada-tests/sptests/sp08/sptest.ads, ada-tests/sptests/sp09/sp09.adb, ada-tests/sptests/sp09/sptest.adb, ada-tests/sptests/sp09/sptest.ads, ada-tests/sptests/sp11/sp11.adb, ada-tests/sptests/sp11/sptest.adb, ada-tests/sptests/sp11/sptest.ads, ada-tests/sptests/sp12/sp12.adb, ada-tests/sptests/sp12/sptest.adb, ada-tests/sptests/sp12/sptest.ads, ada-tests/sptests/sp13/sp13.adb, ada-tests/sptests/sp13/sptest.adb, ada-tests/sptests/sp13/sptest.ads, ada-tests/sptests/sp14/sp14.adb, ada-tests/sptests/sp14/sptest.adb, ada-tests/sptests/sp14/sptest.ads, ada-tests/sptests/sp15/sp15.adb, ada-tests/sptests/sp15/sptest.adb, ada-tests/sptests/sp15/sptest.ads, ada-tests/sptests/sp16/sp16.adb, ada-tests/sptests/sp16/sptest.adb, ada-tests/sptests/sp16/sptest.ads, ada-tests/sptests/sp17/sp17.adb, ada-tests/sptests/sp17/sptest.adb, ada-tests/sptests/sp17/sptest.ads, ada-tests/sptests/sp19/sp19.adb, ada-tests/sptests/sp19/sptest.adp, ada-tests/sptests/sp19/sptest.ads, ada-tests/sptests/sp20/sp20.adb, ada-tests/sptests/sp20/sptest.adb, ada-tests/sptests/sp20/sptest.ads, ada-tests/sptests/sp22/sp22.adb, ada-tests/sptests/sp22/sptest.adb, ada-tests/sptests/sp22/sptest.ads, ada-tests/sptests/sp23/sp23.adb, ada-tests/sptests/sp23/sptest.adb, ada-tests/sptests/sp23/sptest.ads, ada-tests/sptests/sp24/sp24.adb, ada-tests/sptests/sp24/sptest.adb, ada-tests/sptests/sp24/sptest.ads, ada-tests/sptests/sp25/sp25.adb, ada-tests/sptests/sp25/sptest.adb, ada-tests/sptests/sp25/sptest.ads, ada-tests/support/test_support.adb, ada-tests/tmtests/tm01/tm01.adb, ada-tests/tmtests/tm01/tmtest.adb, ada-tests/tmtests/tm01/tmtest.ads, ada-tests/tmtests/tm02/tm02.adb, ada-tests/tmtests/tm02/tmtest.adb, ada-tests/tmtests/tm02/tmtest.ads, ada-tests/tmtests/tm03/tm03.adb, ada-tests/tmtests/tm03/tmtest.adb, ada-tests/tmtests/tm03/tmtest.ads, ada-tests/tmtests/tm04/tm04.adb, ada-tests/tmtests/tm04/tmtest.adb, ada-tests/tmtests/tm04/tmtest.ads, ada-tests/tmtests/tm05/tm05.adb, ada-tests/tmtests/tm05/tmtest.adb, ada-tests/tmtests/tm05/tmtest.ads, ada-tests/tmtests/tm06/tm06.adb, ada-tests/tmtests/tm06/tmtest.adb, ada-tests/tmtests/tm06/tmtest.ads, ada-tests/tmtests/tm07/tm07.adb, ada-tests/tmtests/tm07/tmtest.adb, ada-tests/tmtests/tm07/tmtest.ads, ada-tests/tmtests/tm08/tm08.adb, ada-tests/tmtests/tm08/tmtest.adb, ada-tests/tmtests/tm08/tmtest.ads, ada-tests/tmtests/tm09/tm09.adb, ada-tests/tmtests/tm09/tmtest.adb, ada-tests/tmtests/tm09/tmtest.ads, ada-tests/tmtests/tm10/tm10.adb, ada-tests/tmtests/tm10/tmtest.adb, ada-tests/tmtests/tm10/tmtest.ads, ada-tests/tmtests/tm11/tm11.adb, ada-tests/tmtests/tm11/tmtest.adb, ada-tests/tmtests/tm11/tmtest.ads, ada-tests/tmtests/tm12/tm12.adb, ada-tests/tmtests/tm12/tmtest.adb, ada-tests/tmtests/tm12/tmtest.ads, ada-tests/tmtests/tm13/tm13.adb, ada-tests/tmtests/tm13/tmtest.adb, ada-tests/tmtests/tm13/tmtest.ads, ada-tests/tmtests/tm14/tm14.adb, ada-tests/tmtests/tm14/tmtest.adb, ada-tests/tmtests/tm14/tmtest.ads, ada-tests/tmtests/tm15/tm15.adb, ada-tests/tmtests/tm15/tmtest.adb, ada-tests/tmtests/tm15/tmtest.ads, ada-tests/tmtests/tm16/tm16.adb, ada-tests/tmtests/tm16/tmtest.adb, ada-tests/tmtests/tm16/tmtest.ads, ada-tests/tmtests/tm17/tm17.adb, ada-tests/tmtests/tm17/tmtest.adb, ada-tests/tmtests/tm17/tmtest.ads, ada-tests/tmtests/tm18/tm18.adb, ada-tests/tmtests/tm18/tmtest.adb, ada-tests/tmtests/tm18/tmtest.ads, ada-tests/tmtests/tm19/tm19.adb, ada-tests/tmtests/tm19/tmtest.adb, ada-tests/tmtests/tm19/tmtest.ads, ada-tests/tmtests/tm20/tm20.adb, ada-tests/tmtests/tm20/tmtest.adb, ada-tests/tmtests/tm20/tmtest.ads, ada-tests/tmtests/tm21/tm21.adb, ada-tests/tmtests/tm21/tmtest.adb, ada-tests/tmtests/tm21/tmtest.ads, ada-tests/tmtests/tm22/tm22.adb, ada-tests/tmtests/tm22/tmtest.adb, ada-tests/tmtests/tm22/tmtest.ads, ada-tests/tmtests/tm23/tm23.adb, ada-tests/tmtests/tm23/tmtest.adb, ada-tests/tmtests/tm23/tmtest.ads, ada-tests/tmtests/tm24/tm24.adb, ada-tests/tmtests/tm24/tmtest.adb, ada-tests/tmtests/tm24/tmtest.ads, ada-tests/tmtests/tm25/tm25.adb, ada-tests/tmtests/tm25/tmtest.adb, ada-tests/tmtests/tm25/tmtest.ads, ada-tests/tmtests/tm28/tm28.adb, ada-tests/tmtests/tm28/tmtest.adb, ada-tests/tmtests/tm28/tmtest.ads, ada-tests/tmtests/tm29/tm29.adb, ada-tests/tmtests/tm29/tmtest.adb, ada-tests/tmtests/tm29/tmtest.ads, ada-tests/tmtests/tmck/tmck.adb, ada-tests/tmtests/tmck/tmtest.adb, ada-tests/tmtests/tmck/tmtest.ads, ada-tests/tmtests/tmoverhd/dummy_rtems.adb, ada-tests/tmtests/tmoverhd/dummy_rtems.ads, ada-tests/tmtests/tmoverhd/tmoverhd.adb, ada-tests/tmtests/tmoverhd/tmtest.adb, ada-tests/tmtests/tmoverhd/tmtest.ads: Account for RTEMS binding child package rework. Eliminate all warnings.
  • Property mode set to 100644
File size: 8.9 KB
Line 
1--
2--  SPTEST / BODY
3--
4--  DESCRIPTION:
5--
6--  This package is the implementation of Test 4 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.com/license/LICENSE.
19--
20--  $Id$
21--
22
23with INTERFACES; use INTERFACES;
24with TEST_SUPPORT;
25with TEXT_IO;
26with RTEMS.CLOCK;
27with RTEMS.EXTENSION;
28with RTEMS.FATAL;
29
30package body SPTEST is
31
32   TestsFinished : Boolean := False;
33   pragma Volatile (TestsFinished);
34
35   type Task_Event is record
36      Task_Index    : RTEMS.Unsigned32;
37      When_Switched : RTEMS.Time_Of_Day;
38   end record;
39
40   Task_Events : array (1 .. 15) of Task_Event;
41   Task_Events_Index : Natural := Task_Events'First;
42
43   procedure Log_Task_Event (
44      Task_Index    : RTEMS.Unsigned32;
45      When_Switched : RTEMS.Time_Of_Day
46   ) is
47   begin
48      if Task_Events_Index = Task_Events'Last then
49         RTEMS.Fatal.Error_Occurred ( 1 );  -- no other choice
50      else
51         Task_Events (Task_Events_Index).Task_Index := Task_Index;
52         Task_Events (Task_Events_Index).When_Switched := When_Switched;
53         Task_Events_Index := Task_Events_Index + 1;
54      end if;
55   end Log_Task_Event;
56
57   procedure Flush_Task_Event_Log is
58   begin
59      for I in Task_Events'First .. Task_Events_Index - 1 loop
60
61         TEST_SUPPORT.PUT_NAME(
62            SPTEST.TASK_NAME( Task_Events (I).Task_Index ), FALSE
63         );
64         TEST_SUPPORT.PRINT_TIME( "- ", Task_Events (I).When_Switched, "" );
65         TEXT_IO.NEW_LINE;
66
67      end loop;
68
69   end Flush_Task_Event_Log;
70
71--
72--  INIT
73--
74
75   procedure INIT (
76      ARGUMENT : in     RTEMS.TASKS.ARGUMENT
77   ) is
78      pragma Unreferenced(ARGUMENT);
79      TIME   : RTEMS.TIME_OF_DAY;
80      STATUS : RTEMS.STATUS_CODES;
81   begin
82
83      TEXT_IO.NEW_LINE( 2 );
84      TEXT_IO.PUT_LINE( "*** TEST 4 ***" );
85
86      TIME := ( 1988, 12, 31, 9, 15, 0, 0 );
87
88      RTEMS.CLOCK.SET( TIME, STATUS );
89      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "CLOCK_SET" );
90
91      SPTEST.EXTENSION_NAME( 1 ) := RTEMS.BUILD_NAME(  'E', 'X', 'T', ' ' );
92
93      RTEMS.EXTENSION.CREATE(
94         SPTEST.EXTENSION_NAME( 1 ),
95         SPTEST.EXTENSIONS'ACCESS,
96         EXTENSION_ID( 1 ),
97         STATUS
98      );
99      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "EXTENSION_CREATE" );
100
101      SPTEST.TASK_NAME( 1 ) := RTEMS.BUILD_NAME(  'T', 'A', '1', ' ' );
102      SPTEST.TASK_NAME( 2 ) := RTEMS.BUILD_NAME(  'T', 'A', '2', ' ' );
103      SPTEST.TASK_NAME( 3 ) := RTEMS.BUILD_NAME(  'T', 'A', '3', ' ' );
104
105      SPTEST.RUN_COUNT( 1 ) := 0;
106      SPTEST.RUN_COUNT( 2 ) := 0;
107      SPTEST.RUN_COUNT( 3 ) := 0;
108
109      RTEMS.TASKS.CREATE(
110         SPTEST.TASK_NAME( 1 ),
111         1,
112         2048,
113         RTEMS.TIMESLICE,
114         RTEMS.DEFAULT_ATTRIBUTES,
115         SPTEST.TASK_ID( 1 ),
116         STATUS
117      );
118      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_CREATE OF TA1" );
119
120      RTEMS.TASKS.CREATE(
121         SPTEST.TASK_NAME( 2 ),
122         1,
123         2048,
124         RTEMS.TIMESLICE,
125         RTEMS.DEFAULT_ATTRIBUTES,
126         SPTEST.TASK_ID( 2 ),
127         STATUS
128      );
129      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_CREATE OF TA2" );
130
131      RTEMS.TASKS.CREATE(
132         SPTEST.TASK_NAME( 3 ),
133         1,
134         2048,
135         RTEMS.TIMESLICE,
136         RTEMS.DEFAULT_ATTRIBUTES,
137         SPTEST.TASK_ID( 3 ),
138         STATUS
139      );
140      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_CREATE OF TA3" );
141
142      RTEMS.TASKS.START(
143         SPTEST.TASK_ID( 1 ),
144         SPTEST.TASK_1'ACCESS,
145         0,
146         STATUS
147      );
148      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_START OF TA1" );
149
150      RTEMS.TASKS.START(
151         SPTEST.TASK_ID( 2 ),
152         SPTEST.TASK_2'ACCESS,
153         0,
154         STATUS
155      );
156      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_START OF TA2" );
157
158      RTEMS.TASKS.START(
159         SPTEST.TASK_ID( 3 ),
160         SPTEST.TASK_3'ACCESS,
161         0,
162         STATUS
163      );
164      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_START OF TA3" );
165
166      RTEMS.TASKS.DELETE( RTEMS.SELF, STATUS );
167      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_DELETE OF SELF" );
168
169   end INIT;
170
171--
172--  TASK_1
173--
174
175   procedure TASK_1 (
176      ARGUMENT : in     RTEMS.TASKS.ARGUMENT
177   ) is
178      pragma Unreferenced(ARGUMENT);
179      SECONDS       : RTEMS.UNSIGNED32;
180      OLD_SECONDS   : RTEMS.UNSIGNED32;
181      PREVIOUS_MODE : RTEMS.MODE;
182      TIME          : RTEMS.TIME_OF_DAY;
183      START_TIME    : RTEMS.INTERVAL;
184      END_TIME      : RTEMS.INTERVAL;
185      STATUS        : RTEMS.STATUS_CODES;
186   begin
187
188      TEXT_IO.PUT_LINE( "TA1 - task_suspend - on Task 2" );
189      RTEMS.TASKS.SUSPEND( TASK_ID( 2 ), STATUS );
190      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_SUSPEND OF TA2" );
191 
192      TEXT_IO.PUT_LINE( "TA1 - task_suspend - on Task 3" );
193      RTEMS.TASKS.SUSPEND( TASK_ID( 3 ), STATUS );
194      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_SUSPEND OF TA3" );
195 
196      TEXT_IO.PUT_LINE( "TA1 - killing time" );
197
198      RTEMS.CLOCK.GET(
199         RTEMS.CLOCK.GET_SECONDS_SINCE_EPOCH,
200         START_TIME'ADDRESS,
201         STATUS
202      );
203      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "CLOCK_GET" );
204
205      loop
206         RTEMS.CLOCK.GET(
207            RTEMS.CLOCK.GET_SECONDS_SINCE_EPOCH,
208            END_TIME'ADDRESS,
209            STATUS
210         );
211         TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "CLOCK_GET" );
212
213         exit when END_TIME > (START_TIME + 2);
214      end loop;
215
216      TEXT_IO.PUT_LINE( "TA1 - task_resume - on Task 2" );
217      RTEMS.TASKS.RESUME( TASK_ID( 2 ), STATUS );
218      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_RESUME OF TA2" );
219 
220      TEXT_IO.PUT_LINE( "TA1 - task_resume - on Task 3" );
221      RTEMS.TASKS.RESUME( TASK_ID( 3 ), STATUS );
222      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_RESUME OF TA3" );
223 
224      loop
225
226         if SPTEST.RUN_COUNT( 1 ) = 3 then
227
228            TEXT_IO.PUT_LINE(
229               "TA1 - task_mode - change mode to NO PREEMPT"
230            );
231            RTEMS.TASKS.MODE(
232               RTEMS.NO_PREEMPT,
233               RTEMS.PREEMPT_MASK,
234               PREVIOUS_MODE,
235               STATUS
236            );
237            TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_MODE" );
238
239            RTEMS.CLOCK.GET( RTEMS.CLOCK.GET_TOD, TIME'ADDRESS, STATUS );
240            TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "CLOCK_GET" );
241
242            OLD_SECONDS := TIME.SECOND;
243
244            SECONDS := 0;
245            loop
246
247               exit when SECONDS >= 6;
248
249               RTEMS.CLOCK.GET( RTEMS.CLOCK.GET_TOD, TIME'ADDRESS, STATUS );
250               TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "CLOCK_GET" );
251
252               if TIME.SECOND /= OLD_SECONDS then
253                  OLD_SECONDS := TIME.SECOND;
254                  SECONDS := SECONDS + 1;
255                  TEST_SUPPORT.PRINT_TIME( "TA1 - ", TIME, "" );
256                  TEXT_IO.NEW_LINE;
257               end if;
258
259            end loop;
260
261            TEXT_IO.PUT_LINE(
262               "TA1 - task_mode - change mode to PREEMPT"
263            );
264
265            RTEMS.TASKS.MODE(
266               RTEMS.PREEMPT,
267               RTEMS.PREEMPT_MASK,
268               PREVIOUS_MODE,
269               STATUS
270            );
271            TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_MODE" );
272
273            while not TestsFinished loop
274               NULL;
275            END LOOP;
276            Flush_Task_Event_Log;
277            TEXT_IO.PUT_LINE( "*** END OF TEST 4 ***" );
278            RTEMS.SHUTDOWN_EXECUTIVE( 0 );
279
280         end if;
281
282      end loop;
283
284   end TASK_1;
285
286--
287--  TASK_2
288--
289
290   procedure TASK_2 (
291      ARGUMENT : in     RTEMS.TASKS.ARGUMENT
292   ) is
293      pragma Unreferenced(ARGUMENT);
294   begin
295
296      LOOP
297         NULL;
298      END LOOP;
299
300   end TASK_2;
301
302--
303--  TASK_3
304--
305
306   procedure TASK_3 (
307      ARGUMENT : in     RTEMS.TASKS.ARGUMENT
308   ) is
309      pragma Unreferenced(ARGUMENT);
310   begin
311
312      LOOP
313         NULL;
314      END LOOP;
315
316   end TASK_3;
317
318--
319--  TASK_SWITCH
320--
321
322   procedure TASK_SWITCH (
323      UNUSED : in     RTEMS.TCB_POINTER;
324      HEIR   : in     RTEMS.TCB_POINTER
325   ) is
326      pragma Unreferenced(UNUSED);
327      INDEX  : RTEMS.UNSIGNED32;
328      TIME   : RTEMS.TIME_OF_DAY;
329      STATUS : RTEMS.STATUS_CODES;
330      function TCB_To_ID (
331         TCB : RTEMS.TCB_POINTER
332      ) return RTEMS.ID;
333      pragma Import (C, TCB_To_ID, "tcb_to_id" );
334         
335   begin
336
337      INDEX := TEST_SUPPORT.TASK_NUMBER( TCB_To_ID( HEIR ) );
338
339      case INDEX is
340         when 1  | 2 | 3 =>
341            SPTEST.RUN_COUNT( INDEX ) := SPTEST.RUN_COUNT( INDEX ) + 1;
342
343            RTEMS.CLOCK.GET( RTEMS.CLOCK.GET_TOD, TIME'ADDRESS, STATUS );
344            TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "CLOCK_GET" );
345
346            Log_Task_Event ( INDEX, TIME );
347           
348            if TIME.SECOND >= 16 then
349               TestsFinished := True;
350            end if;
351
352         when others =>
353            NULL;
354      end case;
355
356   end TASK_SWITCH;
357
358end SPTEST;
Note: See TracBrowser for help on using the repository browser.