source: rtems/c/src/ada-tests/sptests/sp24/sptest.adb @ f619250

4.115
Last change on this file since f619250 was 9b4422a2, checked in by Joel Sherrill <joel.sherrill@…>, on May 3, 2012 at 3:09:24 PM

Remove All CVS Id Strings Possible Using a Script

Script does what is expected and tries to do it as
smartly as possible.

+ remove occurrences of two blank comment lines

next to each other after Id string line removed.

+ remove entire comment blocks which only exited to

contain CVS Ids

+ If the processing left a blank line at the top of

a file, it was removed.

  • Property mode set to 100644
File size: 4.3 KB
Line 
1--
2--  SPTEST / BODY
3--
4--  DESCRIPTION:
5--
6--  This package is the implementation of Test 24 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
21with INTERFACES; use INTERFACES;
22with TEST_SUPPORT;
23with TEXT_IO;
24with RTEMS.CLOCK;
25with RTEMS.TIMER;
26
27package body SPTEST is
28
29--
30--  INIT
31--
32
33   procedure INIT (
34      ARGUMENT : in     RTEMS.TASKS.ARGUMENT
35   ) is
36      pragma Unreferenced(ARGUMENT);
37      TIME   : RTEMS.TIME_OF_DAY;
38      STATUS : RTEMS.STATUS_CODES;
39   begin
40
41      TEXT_IO.NEW_LINE( 2 );
42      TEXT_IO.PUT_LINE( "*** TEST 24 ***" );
43
44      TIME := ( 1988, 12, 31, 9, 0, 0, 0 );
45
46      RTEMS.CLOCK.SET( TIME, STATUS );
47      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "CLOCK_SET" );
48
49      SPTEST.TASK_NAME( 1 ) := RTEMS.BUILD_NAME(  'T', 'A', '1', ' ' );
50      SPTEST.TASK_NAME( 2 ) := RTEMS.BUILD_NAME(  'T', 'A', '2', ' ' );
51      SPTEST.TASK_NAME( 3 ) := RTEMS.BUILD_NAME(  'T', 'A', '3', ' ' );
52
53      SPTEST.TIMER_NAME( 1 ) := RTEMS.BUILD_NAME(  'T', 'M', '1', ' ' );
54      SPTEST.TIMER_NAME( 2 ) := RTEMS.BUILD_NAME(  'T', 'M', '2', ' ' );
55      SPTEST.TIMER_NAME( 3 ) := RTEMS.BUILD_NAME(  'T', 'M', '3', ' ' );
56
57      for INDEX in 1 .. 3
58      loop
59
60         RTEMS.TASKS.CREATE( 
61            SPTEST.TASK_NAME( INDEX ), 
62            1, 
63            2048, 
64            RTEMS.DEFAULT_MODES,
65            RTEMS.DEFAULT_ATTRIBUTES,
66            SPTEST.TASK_ID( INDEX ),
67            STATUS
68         );
69         TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_CREATE LOOP" );
70
71         RTEMS.TIMER.CREATE(
72            SPTEST.TIMER_NAME( INDEX ), 
73            SPTEST.TIMER_ID( INDEX ),
74            STATUS
75         );
76         TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TIMER_CREATE LOOP" );
77
78      end loop;
79
80      for INDEX in 1 .. 3
81      loop
82
83         RTEMS.TASKS.START(
84            SPTEST.TASK_ID( INDEX ),
85            SPTEST.TASK_1_THROUGH_3'ACCESS,
86            RTEMS.TASKS.ARGUMENT( INDEX ),
87            STATUS
88         );
89         TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_START LOOP" );
90
91      end loop;
92
93      RTEMS.TASKS.DELETE( RTEMS.SELF, STATUS );
94      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_DELETE OF SELF" );
95
96   end INIT;
97
98--
99--  RESUME_TASK
100--
101
102   procedure RESUME_TASK (
103      TIMER_ID        : in     RTEMS.ID;
104      IGNORED_ADDRESS : in     RTEMS.ADDRESS
105   ) is
106      pragma Unreferenced(IGNORED_ADDRESS);
107      TASK_TO_RESUME : RTEMS.ID;
108      STATUS         : RTEMS.STATUS_CODES;
109   begin
110
111      TASK_TO_RESUME := SPTEST.TASK_ID(INTEGER( RTEMS.GET_INDEX( TIMER_ID ) ));
112      RTEMS.TASKS.RESUME( TASK_TO_RESUME, STATUS );
113      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_RESUME" );
114
115   end RESUME_TASK;
116
117--
118--  TASK_1_THROUGH_3
119--
120
121   procedure TASK_1_THROUGH_3 (
122      ARGUMENT : in     RTEMS.TASKS.ARGUMENT
123   ) is
124      TID    : RTEMS.ID;
125      TIME   : RTEMS.TIME_OF_DAY;
126      STATUS : RTEMS.STATUS_CODES;
127   begin
128
129      RTEMS.TASKS.IDENT( RTEMS.SELF, RTEMS.SEARCH_ALL_NODES, TID, STATUS );
130      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_IDENT OF SELF" );
131   
132      loop
133
134         RTEMS.TIMER.FIRE_AFTER( 
135            SPTEST.TIMER_ID( INTEGER( ARGUMENT ) ), 
136            TEST_SUPPORT.TASK_NUMBER( TID ) * 5 * 
137              TEST_SUPPORT.TICKS_PER_SECOND, 
138            SPTEST.RESUME_TASK'ACCESS,
139            RTEMS.NULL_ADDRESS,
140            STATUS
141         );
142         TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TIMER_FIRE_AFTER" );
143
144         RTEMS.CLOCK.GET( RTEMS.CLOCK.GET_TOD, TIME'ADDRESS, STATUS );
145         TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "CLOCK_GET" );
146
147         if TIME.SECOND >= 35 then
148            TEXT_IO.PUT_LINE( "*** END OF TEST 24 ***" );
149            RTEMS.SHUTDOWN_EXECUTIVE( 0 );
150         end if;
151
152         TEST_SUPPORT.PUT_NAME( 
153            SPTEST.TASK_NAME( INTEGER( TEST_SUPPORT.TASK_NUMBER( TID ) ) ),
154            FALSE
155         );
156
157         TEST_SUPPORT.PRINT_TIME( " - clock_get - ", TIME, "" );
158         TEXT_IO.NEW_LINE;
159
160         RTEMS.TASKS.SUSPEND( RTEMS.SELF, STATUS ); 
161         TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_SUSPEND" );
162         
163      end loop;
164   
165   end TASK_1_THROUGH_3;
166
167end SPTEST;
Note: See TracBrowser for help on using the repository browser.