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

4.9
Last change on this file since 3b1a322 was 3b1a322, checked in by Joel Sherrill <joel.sherrill@…>, on 09/29/08 at 20:44:38

2008-09-29 Joel Sherrill <joel.sherrill@…>

  • support/timer_driver.adb, support/timer_driver.ads, tmtests/tm01/tmtest.adb, tmtests/tm02/tmtest.adb, tmtests/tm03/tmtest.adb, tmtests/tm04/tmtest.adb, tmtests/tm05/tmtest.adb, tmtests/tm06/tmtest.adb, tmtests/tm07/tmtest.adb, tmtests/tm08/tmtest.adb, tmtests/tm09/tmtest.adb, tmtests/tm10/tmtest.adb, tmtests/tm11/tmtest.adb, tmtests/tm12/tmtest.adb, tmtests/tm13/tmtest.adb, tmtests/tm14/tmtest.adb, tmtests/tm15/tmtest.adb, tmtests/tm16/tmtest.adb, tmtests/tm17/tmtest.adb, tmtests/tm18/tmtest.adb, tmtests/tm19/tmtest.adb, tmtests/tm20/config.h, tmtests/tm20/tmtest.adb, tmtests/tm21/tmtest.adb, tmtests/tm22/tmtest.adb, tmtests/tm23/tmtest.adb, tmtests/tm24/tmtest.adb, tmtests/tm25/tmtest.adb, tmtests/tm28/tmtest.adb, tmtests/tm29/tmtest.adb, tmtests/tmck/tmtest.adb, tmtests/tmoverhd/tmtest.adb: Clean up. Verified to run on psim with gcc 4.3.2.
  • 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--
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 RTEMS;
25with RTEMS_CALLING_OVERHEAD;
26with TEST_SUPPORT;
27with TEXT_IO;
28with TIME_TEST_SUPPORT;
29with UNSIGNED32_IO;
30
31package body TMTEST is
32
33--PAGE
34--
35--  INIT
36--
37
38   procedure INIT (
39      ARGUMENT : in     RTEMS.TASK_ARGUMENT
40   ) is
41      ID     : RTEMS.ID;
42      STATUS : RTEMS.STATUS_CODES;
43   begin
44
45      TEXT_IO.NEW_LINE( 2 );
46      TEXT_IO.PUT_LINE( "*** TIME TEST 21 ***" );
47
48      RTEMS.TASK_CREATE(
49         RTEMS.BUILD_NAME( 'T', 'I', 'M', 'E' ),
50         250,
51         2048,
52         RTEMS.DEFAULT_MODES,
53         RTEMS.DEFAULT_ATTRIBUTES,
54         ID,
55         STATUS
56      );
57      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_CREATE TASK_1" );
58
59      RTEMS.TASK_START( ID, TMTEST.TASK_1'ACCESS, 0, STATUS );
60      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_START TASK1" );
61
62      RTEMS.TASK_DELETE( RTEMS.SELF, STATUS );
63      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_DELETE OF SELF" );
64
65   end INIT;
66
67--PAGE
68--
69--  TASK_1
70--
71
72   procedure TASK_1 (
73      ARGUMENT : in     RTEMS.TASK_ARGUMENT
74   ) is
75      ID       : RTEMS.ID;
76      OVERHEAD : RTEMS.UNSIGNED32;
77      STATUS   : RTEMS.STATUS_CODES;
78   begin
79
80      for INDEX in 1 .. TIME_TEST_SUPPORT.OPERATION_COUNT
81      loop
82
83         RTEMS.TASK_CREATE(
84            INDEX,
85            254,
86            1024,
87            RTEMS.DEFAULT_MODES,
88            RTEMS.DEFAULT_ATTRIBUTES,
89            ID,
90            STATUS
91         );
92         TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_CREATE" );
93
94         RTEMS.MESSAGE_QUEUE_CREATE(
95            INDEX,
96            TIME_TEST_SUPPORT.OPERATION_COUNT,
97            16,
98            RTEMS.DEFAULT_ATTRIBUTES,
99            ID,
100            STATUS
101         );
102         TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "MESSAGE_QUEUE_CREATE" );
103
104         RTEMS.SEMAPHORE_CREATE(
105            INDEX,
106            TIME_TEST_SUPPORT.OPERATION_COUNT,
107            RTEMS.DEFAULT_ATTRIBUTES,
108            RTEMS.NO_PRIORITY,
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      TEXT_IO.PUT_LINE( "*** END OF TIME TEST 21 ***" );
297      RTEMS.SHUTDOWN_EXECUTIVE( 0 );
298
299   end TASK_1;
300
301end TMTEST;
Note: See TracBrowser for help on using the repository browser.