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

4.104.114.84.95
Last change on this file since b4be04e 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: 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            ID,
110            STATUS
111         );
112         TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "SEMAPHORE_CREATE" );
113
114         RTEMS.REGION_CREATE(
115            INDEX,
116            TMTEST.REGION_AREA'ADDRESS,
117            2048,
118            16,
119            RTEMS.DEFAULT_ATTRIBUTES,
120            ID,
121            STATUS
122         );
123         TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "REGION_CREATE" );
124
125         RTEMS.PARTITION_CREATE(
126            INDEX,
127            TMTEST.PARTITION_AREA'ADDRESS,
128            2048,
129            128,
130            RTEMS.DEFAULT_ATTRIBUTES,
131            ID,
132            STATUS
133         );
134         TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "PARTITION_CREATE" );
135
136         RTEMS.PORT_CREATE(
137            INDEX,
138            TMTEST.INTERNAL_PORT_AREA'ADDRESS,
139            TMTEST.EXTERNAL_PORT_AREA'ADDRESS,
140            16#FF#,
141            ID,
142            STATUS
143         );
144         TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "PORT_CREATE" );
145
146         RTEMS.TIMER_CREATE( INDEX, ID, STATUS );
147         TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TIMER_CREATE" );
148
149         RTEMS.RATE_MONOTONIC_CREATE( INDEX, ID, STATUS );
150         TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "RATE_MONOTONIC_CREATE" );
151
152      end loop;
153
154      TIMER_DRIVER.INITIALIZE;
155         for INDEX in 1 .. TIME_TEST_SUPPORT.OPERATION_COUNT
156         loop
157            TIMER_DRIVER.EMPTY_FUNCTION;
158         end loop;
159      OVERHEAD := TIMER_DRIVER.READ_TIMER;
160
161      TIMER_DRIVER.INITIALIZE;
162         for INDEX in 1 .. TIME_TEST_SUPPORT.OPERATION_COUNT
163         loop
164            RTEMS.TASK_IDENT( INDEX, RTEMS.SEARCH_ALL_NODES, ID, STATUS );
165         end loop;
166      TMTEST.END_TIME := TIMER_DRIVER.READ_TIMER;
167
168      TIME_TEST_SUPPORT.PUT_TIME(
169         "TASK_IDENT",
170         TMTEST.END_TIME,
171         TIME_TEST_SUPPORT.OPERATION_COUNT,
172         OVERHEAD,
173         RTEMS_CALLING_OVERHEAD.TASK_IDENT
174      );
175
176      TIMER_DRIVER.INITIALIZE;
177         for INDEX in 1 .. TIME_TEST_SUPPORT.OPERATION_COUNT
178         loop
179            RTEMS.MESSAGE_QUEUE_IDENT(
180               INDEX,
181               RTEMS.SEARCH_ALL_NODES,
182               ID,
183               STATUS
184            );
185         end loop;
186      TMTEST.END_TIME := TIMER_DRIVER.READ_TIMER;
187
188      TIME_TEST_SUPPORT.PUT_TIME(
189         "MESSAGE_QUEUE_IDENT",
190         TMTEST.END_TIME,
191         TIME_TEST_SUPPORT.OPERATION_COUNT,
192         OVERHEAD,
193         RTEMS_CALLING_OVERHEAD.MESSAGE_QUEUE_IDENT
194      );
195
196      TIMER_DRIVER.INITIALIZE;
197         for INDEX in 1 .. TIME_TEST_SUPPORT.OPERATION_COUNT
198         loop
199            RTEMS.SEMAPHORE_IDENT(
200               INDEX,
201               RTEMS.SEARCH_ALL_NODES,
202               ID,
203               STATUS
204           );
205         end loop;
206      TMTEST.END_TIME := TIMER_DRIVER.READ_TIMER;
207
208      TIME_TEST_SUPPORT.PUT_TIME(
209         "SEMAPHORE_IDENT",
210         TMTEST.END_TIME,
211         TIME_TEST_SUPPORT.OPERATION_COUNT,
212         OVERHEAD,
213         RTEMS_CALLING_OVERHEAD.SEMAPHORE_IDENT
214      );
215
216      TIMER_DRIVER.INITIALIZE;
217         for INDEX in 1 .. TIME_TEST_SUPPORT.OPERATION_COUNT
218         loop
219            RTEMS.PARTITION_IDENT(
220               INDEX,
221               RTEMS.SEARCH_ALL_NODES,
222               ID,
223               STATUS
224           );
225         end loop;
226      TMTEST.END_TIME := TIMER_DRIVER.READ_TIMER;
227
228      TIME_TEST_SUPPORT.PUT_TIME(
229         "PARTITION_IDENT",
230         TMTEST.END_TIME,
231         TIME_TEST_SUPPORT.OPERATION_COUNT,
232         OVERHEAD,
233         RTEMS_CALLING_OVERHEAD.PARTITION_IDENT
234      );
235
236      TIMER_DRIVER.INITIALIZE;
237         for INDEX in 1 .. TIME_TEST_SUPPORT.OPERATION_COUNT
238         loop
239            RTEMS.REGION_IDENT( INDEX, ID, STATUS );
240         end loop;
241      TMTEST.END_TIME := TIMER_DRIVER.READ_TIMER;
242
243      TIME_TEST_SUPPORT.PUT_TIME(
244         "REGION_IDENT",
245         TMTEST.END_TIME,
246         TIME_TEST_SUPPORT.OPERATION_COUNT,
247         OVERHEAD,
248         RTEMS_CALLING_OVERHEAD.REGION_IDENT
249      );
250
251      TIMER_DRIVER.INITIALIZE;
252         for INDEX in 1 .. TIME_TEST_SUPPORT.OPERATION_COUNT
253         loop
254            RTEMS.PORT_IDENT( INDEX, ID, STATUS );
255         end loop;
256      TMTEST.END_TIME := TIMER_DRIVER.READ_TIMER;
257
258      TIME_TEST_SUPPORT.PUT_TIME(
259         "PORT_IDENT",
260         TMTEST.END_TIME,
261         TIME_TEST_SUPPORT.OPERATION_COUNT,
262         OVERHEAD,
263         RTEMS_CALLING_OVERHEAD.PORT_IDENT
264      );
265
266      TIMER_DRIVER.INITIALIZE;
267         for INDEX in 1 .. TIME_TEST_SUPPORT.OPERATION_COUNT
268         loop
269            RTEMS.TIMER_IDENT( INDEX, ID, STATUS );
270         end loop;
271      TMTEST.END_TIME := TIMER_DRIVER.READ_TIMER;
272
273      TIME_TEST_SUPPORT.PUT_TIME(
274         "TIMER_IDENT",
275         TMTEST.END_TIME,
276         TIME_TEST_SUPPORT.OPERATION_COUNT,
277         OVERHEAD,
278         RTEMS_CALLING_OVERHEAD.TIMER_IDENT
279      );
280
281      TIMER_DRIVER.INITIALIZE;
282         for INDEX in 1 .. TIME_TEST_SUPPORT.OPERATION_COUNT
283         loop
284            RTEMS.RATE_MONOTONIC_IDENT( INDEX, ID, STATUS );
285         end loop;
286      TMTEST.END_TIME := TIMER_DRIVER.READ_TIMER;
287
288      TIME_TEST_SUPPORT.PUT_TIME(
289         "RATE_MONOTONIC_IDENT",
290         TMTEST.END_TIME,
291         TIME_TEST_SUPPORT.OPERATION_COUNT,
292         OVERHEAD,
293         RTEMS_CALLING_OVERHEAD.RATE_MONOTONIC_IDENT
294      );
295
296      RTEMS.SHUTDOWN_EXECUTIVE( 0 );
297
298   end TASK_1;
299
300end TMTEST;
Note: See TracBrowser for help on using the repository browser.