source: rtems/c/src/ada-tests/tmtests/tm21/tmtest.adb @ c7f646b5

4.104.114.84.95
Last change on this file since c7f646b5 was c7f646b5, checked in by Joel Sherrill <joel.sherrill@…>, on 06/03/97 at 21:43:20

Fixed all references to Semaphore_Create to have the correct
argument sequence.

  • Property mode set to 100644
File size: 7.6 KB
Line 
1--
2--  TMTEST / BODY
3--
4--  DESCRIPTION:
5--
6--  This package is the implementation of Test 21 of the RTEMS
7--  Timing 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 RTEMS_CALLING_OVERHEAD;
27with TEST_SUPPORT;
28with TEXT_IO;
29with TIME_TEST_SUPPORT;
30with UNSIGNED32_IO;
31
32package body TMTEST is
33
34--PAGE
35--
36--  INIT
37--
38
39   procedure INIT (
40      ARGUMENT : in     RTEMS.TASK_ARGUMENT
41   ) is
42      ID     : RTEMS.ID;
43      STATUS : RTEMS.STATUS_CODES;
44   begin
45
46      TEXT_IO.NEW_LINE( 2 );
47      TEXT_IO.PUT_LINE( "*** TIME TEST 21 ***" );
48
49      RTEMS.TASK_CREATE(
50         RTEMS.BUILD_NAME( 'T', 'I', 'M', 'E' ),
51         250,
52         2048,
53         RTEMS.DEFAULT_MODES,
54         RTEMS.DEFAULT_ATTRIBUTES,
55         ID,
56         STATUS
57      );
58      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_CREATE TASK_1" );
59
60      RTEMS.TASK_START( ID, TMTEST.TASK_1'ACCESS, 0, STATUS );
61      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_START TASK1" );
62
63      RTEMS.TASK_DELETE( RTEMS.SELF, STATUS );
64      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_DELETE OF SELF" );
65
66   end INIT;
67
68--PAGE
69--
70--  TASK_1
71--
72
73   procedure TASK_1 (
74      ARGUMENT : in     RTEMS.TASK_ARGUMENT
75   ) is
76      INDEX    : RTEMS.UNSIGNED32;
77      ID       : RTEMS.ID;
78      OVERHEAD : RTEMS.UNSIGNED32;
79      STATUS   : RTEMS.STATUS_CODES;
80   begin
81
82      for INDEX in 1 .. TIME_TEST_SUPPORT.OPERATION_COUNT
83      loop
84
85         RTEMS.TASK_CREATE(
86            INDEX,
87            254,
88            1024,
89            RTEMS.DEFAULT_MODES,
90            RTEMS.DEFAULT_ATTRIBUTES,
91            ID,
92            STATUS
93         );
94         TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_CREATE" );
95
96         RTEMS.MESSAGE_QUEUE_CREATE(
97            INDEX,
98            TIME_TEST_SUPPORT.OPERATION_COUNT,
99            RTEMS.DEFAULT_ATTRIBUTES,
100            ID,
101            STATUS
102         );
103         TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "MESSAGE_QUEUE_CREATE" );
104
105         RTEMS.SEMAPHORE_CREATE(
106            INDEX,
107            TIME_TEST_SUPPORT.OPERATION_COUNT,
108            RTEMS.DEFAULT_ATTRIBUTES,
109            RTEMS.NO_PRIORITY,
110            ID,
111            STATUS
112         );
113         TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "SEMAPHORE_CREATE" );
114
115         RTEMS.REGION_CREATE(
116            INDEX,
117            TMTEST.REGION_AREA'ADDRESS,
118            2048,
119            16,
120            RTEMS.DEFAULT_ATTRIBUTES,
121            ID,
122            STATUS
123         );
124         TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "REGION_CREATE" );
125
126         RTEMS.PARTITION_CREATE(
127            INDEX,
128            TMTEST.PARTITION_AREA'ADDRESS,
129            2048,
130            128,
131            RTEMS.DEFAULT_ATTRIBUTES,
132            ID,
133            STATUS
134         );
135         TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "PARTITION_CREATE" );
136
137         RTEMS.PORT_CREATE(
138            INDEX,
139            TMTEST.INTERNAL_PORT_AREA'ADDRESS,
140            TMTEST.EXTERNAL_PORT_AREA'ADDRESS,
141            16#FF#,
142            ID,
143            STATUS
144         );
145         TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "PORT_CREATE" );
146
147         RTEMS.TIMER_CREATE( INDEX, ID, STATUS );
148         TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TIMER_CREATE" );
149
150         RTEMS.RATE_MONOTONIC_CREATE( INDEX, ID, STATUS );
151         TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "RATE_MONOTONIC_CREATE" );
152
153      end loop;
154
155      TIMER_DRIVER.INITIALIZE;
156         for INDEX in 1 .. TIME_TEST_SUPPORT.OPERATION_COUNT
157         loop
158            TIMER_DRIVER.EMPTY_FUNCTION;
159         end loop;
160      OVERHEAD := TIMER_DRIVER.READ_TIMER;
161
162      TIMER_DRIVER.INITIALIZE;
163         for INDEX in 1 .. TIME_TEST_SUPPORT.OPERATION_COUNT
164         loop
165            RTEMS.TASK_IDENT( INDEX, RTEMS.SEARCH_ALL_NODES, ID, STATUS );
166         end loop;
167      TMTEST.END_TIME := TIMER_DRIVER.READ_TIMER;
168
169      TIME_TEST_SUPPORT.PUT_TIME(
170         "TASK_IDENT",
171         TMTEST.END_TIME,
172         TIME_TEST_SUPPORT.OPERATION_COUNT,
173         OVERHEAD,
174         RTEMS_CALLING_OVERHEAD.TASK_IDENT
175      );
176
177      TIMER_DRIVER.INITIALIZE;
178         for INDEX in 1 .. TIME_TEST_SUPPORT.OPERATION_COUNT
179         loop
180            RTEMS.MESSAGE_QUEUE_IDENT(
181               INDEX,
182               RTEMS.SEARCH_ALL_NODES,
183               ID,
184               STATUS
185            );
186         end loop;
187      TMTEST.END_TIME := TIMER_DRIVER.READ_TIMER;
188
189      TIME_TEST_SUPPORT.PUT_TIME(
190         "MESSAGE_QUEUE_IDENT",
191         TMTEST.END_TIME,
192         TIME_TEST_SUPPORT.OPERATION_COUNT,
193         OVERHEAD,
194         RTEMS_CALLING_OVERHEAD.MESSAGE_QUEUE_IDENT
195      );
196
197      TIMER_DRIVER.INITIALIZE;
198         for INDEX in 1 .. TIME_TEST_SUPPORT.OPERATION_COUNT
199         loop
200            RTEMS.SEMAPHORE_IDENT(
201               INDEX,
202               RTEMS.SEARCH_ALL_NODES,
203               ID,
204               STATUS
205           );
206         end loop;
207      TMTEST.END_TIME := TIMER_DRIVER.READ_TIMER;
208
209      TIME_TEST_SUPPORT.PUT_TIME(
210         "SEMAPHORE_IDENT",
211         TMTEST.END_TIME,
212         TIME_TEST_SUPPORT.OPERATION_COUNT,
213         OVERHEAD,
214         RTEMS_CALLING_OVERHEAD.SEMAPHORE_IDENT
215      );
216
217      TIMER_DRIVER.INITIALIZE;
218         for INDEX in 1 .. TIME_TEST_SUPPORT.OPERATION_COUNT
219         loop
220            RTEMS.PARTITION_IDENT(
221               INDEX,
222               RTEMS.SEARCH_ALL_NODES,
223               ID,
224               STATUS
225           );
226         end loop;
227      TMTEST.END_TIME := TIMER_DRIVER.READ_TIMER;
228
229      TIME_TEST_SUPPORT.PUT_TIME(
230         "PARTITION_IDENT",
231         TMTEST.END_TIME,
232         TIME_TEST_SUPPORT.OPERATION_COUNT,
233         OVERHEAD,
234         RTEMS_CALLING_OVERHEAD.PARTITION_IDENT
235      );
236
237      TIMER_DRIVER.INITIALIZE;
238         for INDEX in 1 .. TIME_TEST_SUPPORT.OPERATION_COUNT
239         loop
240            RTEMS.REGION_IDENT( INDEX, ID, STATUS );
241         end loop;
242      TMTEST.END_TIME := TIMER_DRIVER.READ_TIMER;
243
244      TIME_TEST_SUPPORT.PUT_TIME(
245         "REGION_IDENT",
246         TMTEST.END_TIME,
247         TIME_TEST_SUPPORT.OPERATION_COUNT,
248         OVERHEAD,
249         RTEMS_CALLING_OVERHEAD.REGION_IDENT
250      );
251
252      TIMER_DRIVER.INITIALIZE;
253         for INDEX in 1 .. TIME_TEST_SUPPORT.OPERATION_COUNT
254         loop
255            RTEMS.PORT_IDENT( INDEX, ID, STATUS );
256         end loop;
257      TMTEST.END_TIME := TIMER_DRIVER.READ_TIMER;
258
259      TIME_TEST_SUPPORT.PUT_TIME(
260         "PORT_IDENT",
261         TMTEST.END_TIME,
262         TIME_TEST_SUPPORT.OPERATION_COUNT,
263         OVERHEAD,
264         RTEMS_CALLING_OVERHEAD.PORT_IDENT
265      );
266
267      TIMER_DRIVER.INITIALIZE;
268         for INDEX in 1 .. TIME_TEST_SUPPORT.OPERATION_COUNT
269         loop
270            RTEMS.TIMER_IDENT( INDEX, ID, STATUS );
271         end loop;
272      TMTEST.END_TIME := TIMER_DRIVER.READ_TIMER;
273
274      TIME_TEST_SUPPORT.PUT_TIME(
275         "TIMER_IDENT",
276         TMTEST.END_TIME,
277         TIME_TEST_SUPPORT.OPERATION_COUNT,
278         OVERHEAD,
279         RTEMS_CALLING_OVERHEAD.TIMER_IDENT
280      );
281
282      TIMER_DRIVER.INITIALIZE;
283         for INDEX in 1 .. TIME_TEST_SUPPORT.OPERATION_COUNT
284         loop
285            RTEMS.RATE_MONOTONIC_IDENT( INDEX, ID, STATUS );
286         end loop;
287      TMTEST.END_TIME := TIMER_DRIVER.READ_TIMER;
288
289      TIME_TEST_SUPPORT.PUT_TIME(
290         "RATE_MONOTONIC_IDENT",
291         TMTEST.END_TIME,
292         TIME_TEST_SUPPORT.OPERATION_COUNT,
293         OVERHEAD,
294         RTEMS_CALLING_OVERHEAD.RATE_MONOTONIC_IDENT
295      );
296
297      RTEMS.SHUTDOWN_EXECUTIVE( 0 );
298
299   end TASK_1;
300
301end TMTEST;
Note: See TracBrowser for help on using the repository browser.