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

4.104.114.84.95
Last change on this file since fff840e was 688ecaa0, checked in by Joel Sherrill <joel.sherrill@…>, on 06/03/97 at 22:08:59

Fixed calls to Message_Queue_Create to include maximum message size
parameter.

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