source: rtems/c/src/ada-tests/tmtests/tm15/tmtest.adb @ 820901ba

4.104.114.84.95
Last change on this file since 820901ba was 820901ba, checked in by Joel Sherrill <joel.sherrill@…>, on May 3, 2005 at 9:41:45 PM

2005-05-03 Joel Sherrill <joel@…>

  • samples/hello/sptest.adb, sptests/sp03/sptest.adb, sptests/sp04/sptest.adb, sptests/sp05/sptest.adb, sptests/sp07/sptest.adb, sptests/sp13/sptest.adb, sptests/sp14/sptest.adb, sptests/sp20/sptest.adb, sptests/sp24/sptest.adb, 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/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/dummy_rtems.adb, tmtests/tmoverhd/tmtest.adb: Remove warnings.
  • Property mode set to 100644
File size: 6.2 KB
Line 
1--
2--  TMTEST / BODY
3--
4--  DESCRIPTION:
5--
6--  This package is the implementation of Test 15 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      STATUS  : RTEMS.STATUS_CODES;
42   begin
43
44      TEXT_IO.NEW_LINE( 2 );
45      TEXT_IO.PUT_LINE( "*** TIME TEST 15 ***" );
46
47      TMTEST.TEST_INIT;
48
49      RTEMS.TASK_DELETE( RTEMS.SELF, STATUS );
50      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_DELETE OF SELF" );
51
52   end INIT;
53
54--PAGE
55--
56--  TEST_INIT
57--
58
59   procedure TEST_INIT
60   is
61      ID        : RTEMS.ID;
62      OVERHEAD  : RTEMS.UNSIGNED32;
63      EVENT_OUT : RTEMS.EVENT_SET;
64      STATUS    : RTEMS.STATUS_CODES;
65   begin
66
67      TMTEST.TIME_SET := FALSE;
68
69      RTEMS.TASK_CREATE( 
70         RTEMS.BUILD_NAME( 'L', 'O', 'W', ' ' ),
71         10, 
72         1024, 
73         RTEMS.NO_PREEMPT,
74         RTEMS.DEFAULT_ATTRIBUTES,
75         ID,
76         STATUS
77      );
78      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_CREATE LOW" );
79
80      RTEMS.TASK_START( ID, TMTEST.LOW_TASK'ACCESS, 0, STATUS );
81      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_START LOW" );
82
83      for INDEX in 1 .. TIME_TEST_SUPPORT.OPERATION_COUNT
84      loop
85
86         RTEMS.TASK_CREATE( 
87            RTEMS.BUILD_NAME( 'H', 'I', 'G', 'H' ),
88            5, 
89            1024, 
90            RTEMS.DEFAULT_MODES,
91            RTEMS.DEFAULT_ATTRIBUTES,
92            TMTEST.TASK_ID( INDEX ),
93            STATUS
94         );
95         TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_CREATE LOOP" );
96
97         RTEMS.TASK_START( 
98            TMTEST.TASK_ID( INDEX ),
99            TMTEST.HIGH_TASKS'ACCESS, 
100            0, 
101            STATUS
102         );
103         TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_START LOOP" );
104
105      end loop;
106
107      TIMER_DRIVER.INITIALIZE;
108         for INDEX in 1 .. TIME_TEST_SUPPORT.OPERATION_COUNT
109         loop
110            TIMER_DRIVER.EMPTY_FUNCTION;
111         end loop;
112      OVERHEAD := TIMER_DRIVER.READ_TIMER;
113
114      TIMER_DRIVER.INITIALIZE;
115         for INDEX in 1 .. TIME_TEST_SUPPORT.OPERATION_COUNT
116         loop
117            RTEMS.EVENT_RECEIVE(
118               RTEMS.PENDING_EVENTS,
119               RTEMS.DEFAULT_OPTIONS,
120               RTEMS.NO_TIMEOUT,
121               EVENT_OUT,
122               STATUS
123            );
124         end loop;
125      TMTEST.END_TIME := TIMER_DRIVER.READ_TIMER;
126
127      TIME_TEST_SUPPORT.PUT_TIME( 
128         "EVENT_RECEIVE (current)",
129         TMTEST.END_TIME, 
130         TIME_TEST_SUPPORT.OPERATION_COUNT, 
131         OVERHEAD,
132         RTEMS_CALLING_OVERHEAD.EVENT_RECEIVE
133      );
134
135      TIMER_DRIVER.INITIALIZE;
136         for INDEX in 1 .. TIME_TEST_SUPPORT.OPERATION_COUNT
137         loop
138            RTEMS.EVENT_RECEIVE(
139               RTEMS.ALL_EVENTS,
140               RTEMS.NO_WAIT,
141               RTEMS.NO_TIMEOUT,
142               EVENT_OUT,
143               STATUS
144            );
145         end loop;
146      TMTEST.END_TIME := TIMER_DRIVER.READ_TIMER;
147
148      TIME_TEST_SUPPORT.PUT_TIME( 
149         "EVENT_RECEIVE (NO_WAIT)",
150         TMTEST.END_TIME, 
151         TIME_TEST_SUPPORT.OPERATION_COUNT, 
152         OVERHEAD,
153         RTEMS_CALLING_OVERHEAD.EVENT_RECEIVE
154      );
155
156   end TEST_INIT;
157
158--PAGE
159--
160--  LOW_TASK
161--
162
163   procedure LOW_TASK (
164      ARGUMENT : in     RTEMS.TASK_ARGUMENT
165   ) is
166      EVENT_OUT : RTEMS.EVENT_SET;
167      OVERHEAD  : RTEMS.UNSIGNED32;
168      STATUS    : RTEMS.STATUS_CODES;
169   begin
170   
171      TMTEST.END_TIME := TIMER_DRIVER.READ_TIMER;
172
173      TIME_TEST_SUPPORT.PUT_TIME( 
174         "EVENT_RECEIVE (blocking)",
175         TMTEST.END_TIME, 
176         TIME_TEST_SUPPORT.OPERATION_COUNT, 
177         0,
178         RTEMS_CALLING_OVERHEAD.EVENT_RECEIVE
179      );
180
181      TIMER_DRIVER.INITIALIZE;
182         for INDEX in 1 .. TIME_TEST_SUPPORT.OPERATION_COUNT
183         loop
184            TIMER_DRIVER.EMPTY_FUNCTION;
185         end loop;
186      OVERHEAD := TIMER_DRIVER.READ_TIMER;
187
188      TIMER_DRIVER.INITIALIZE;
189         for INDEX in 1 .. TIME_TEST_SUPPORT.OPERATION_COUNT
190         loop
191            RTEMS.EVENT_SEND( RTEMS.SELF, RTEMS.EVENT_16, STATUS );
192         end loop;
193      TMTEST.END_TIME := TIMER_DRIVER.READ_TIMER;
194
195      TIME_TEST_SUPPORT.PUT_TIME( 
196         "EVENT_SEND (returns to caller)",
197         TMTEST.END_TIME, 
198         TIME_TEST_SUPPORT.OPERATION_COUNT, 
199         OVERHEAD,
200         RTEMS_CALLING_OVERHEAD.EVENT_SEND
201      );
202
203      TIMER_DRIVER.INITIALIZE;
204         RTEMS.EVENT_RECEIVE(
205            RTEMS.EVENT_16,
206            RTEMS.DEFAULT_OPTIONS,
207            RTEMS.NO_TIMEOUT,
208            EVENT_OUT,
209            STATUS
210         );
211      TMTEST.END_TIME := TIMER_DRIVER.READ_TIMER;
212
213      TIME_TEST_SUPPORT.PUT_TIME( 
214         "EVENT_RECEIVE (available)",
215         TMTEST.END_TIME, 
216         1, 
217         0,
218         RTEMS_CALLING_OVERHEAD.EVENT_RECEIVE
219      );
220
221      TIMER_DRIVER.INITIALIZE;
222         for INDEX in 1 .. TIME_TEST_SUPPORT.OPERATION_COUNT
223         loop
224            RTEMS.EVENT_SEND( 
225               TMTEST.TASK_ID( INDEX ), 
226               RTEMS.EVENT_16, 
227               STATUS
228            );
229         end loop;
230      TMTEST.END_TIME := TIMER_DRIVER.READ_TIMER;
231
232      TIME_TEST_SUPPORT.PUT_TIME( 
233         "EVENT_SEND (readying)",
234         TMTEST.END_TIME, 
235         TIME_TEST_SUPPORT.OPERATION_COUNT, 
236         OVERHEAD,
237         RTEMS_CALLING_OVERHEAD.EVENT_SEND
238      );
239
240      RTEMS.SHUTDOWN_EXECUTIVE( 0 );
241
242   end LOW_TASK;
243
244--PAGE
245--
246--  HIGH_TASKS
247--
248
249   procedure HIGH_TASKS (
250      ARGUMENT : in     RTEMS.TASK_ARGUMENT
251   ) is
252      EVENT_OUT : RTEMS.EVENT_SET;
253      STATUS    : RTEMS.STATUS_CODES;
254   begin
255
256      if TMTEST.TIME_SET = FALSE then
257         TMTEST.TIME_SET := TRUE;
258         TIMER_DRIVER.INITIALIZE;
259      end if;
260
261      RTEMS.EVENT_RECEIVE(
262         16#7FFFFFFF#,
263         RTEMS.DEFAULT_OPTIONS,
264         RTEMS.NO_TIMEOUT,
265         EVENT_OUT,
266         STATUS
267      );
268   
269   end HIGH_TASKS;
270
271end TMTEST;
Note: See TracBrowser for help on using the repository browser.