source: rtems/c/src/ada-tests/tmtests/tm15/tmtest.adb @ 110e1f1

4.104.115
Last change on this file since 110e1f1 was 110e1f1, checked in by Joel Sherrill <joel.sherrill@…>, on 12/14/09 at 21:17:59

2009-12-14 Joel Sherrill <joel.sherrill@…>

  • samples/base_sp/sptest.adb, samples/hello/sptest.adb, samples/nsecs/sptest.adb, samples/ticker/sptest.adb, sptests/sp01/sptest.adb, sptests/sp02/sptest.adb, sptests/sp03/sptest.adb, sptests/sp04/sptest.adb, sptests/sp05/sptest.adb, sptests/sp06/sptest.adb, sptests/sp07/sptest.adb, sptests/sp08/sptest.adb, sptests/sp09/sptest.adb, sptests/sp11/sptest.adb, sptests/sp12/sptest.adb, sptests/sp13/sptest.adb, sptests/sp14/sptest.adb, sptests/sp15/sptest.adb, sptests/sp16/sptest.adb, sptests/sp17/sptest.adb, sptests/sp19/sptest.adp, sptests/sp20/sptest.adb, sptests/sp22/sptest.adb, sptests/sp23/sptest.adb, sptests/sp24/sptest.adb, sptests/sp25/sptest.adb, sptests/spname01/spname01.adb, sptests/spname01/sptest.adb, sptests/spname01/sptest.ads, support/address_io.adb, support/init.c, support/test_support.adb, support/test_support.ads, support/time_test_support.adb, support/timer_driver.adb, tmtests/tm01/tmtest.adb, tmtests/tm01/tmtest.ads, tmtests/tm02/tmtest.adb, tmtests/tm02/tmtest.ads, tmtests/tm03/tmtest.adb, tmtests/tm03/tmtest.ads, tmtests/tm04/tmtest.adb, tmtests/tm04/tmtest.ads, tmtests/tm05/tmtest.adb, tmtests/tm05/tmtest.ads, tmtests/tm06/tmtest.adb, tmtests/tm06/tmtest.ads, tmtests/tm07/tmtest.adb, tmtests/tm07/tmtest.ads, tmtests/tm08/tmtest.adb, tmtests/tm08/tmtest.ads, tmtests/tm09/tmtest.adb, tmtests/tm09/tmtest.ads, tmtests/tm10/tmtest.adb, tmtests/tm10/tmtest.ads, tmtests/tm11/tmtest.adb, tmtests/tm11/tmtest.ads, tmtests/tm12/tmtest.adb, tmtests/tm12/tmtest.ads, tmtests/tm13/tmtest.adb, tmtests/tm13/tmtest.ads, tmtests/tm14/tmtest.adb, tmtests/tm14/tmtest.ads, tmtests/tm15/tmtest.adb, tmtests/tm15/tmtest.ads, tmtests/tm16/tmtest.adb, tmtests/tm16/tmtest.ads, tmtests/tm17/tmtest.adb, tmtests/tm17/tmtest.ads, tmtests/tm18/tmtest.adb, tmtests/tm18/tmtest.ads, tmtests/tm19/tmtest.adb, tmtests/tm19/tmtest.ads, tmtests/tm20/tmtest.adb, tmtests/tm20/tmtest.ads, tmtests/tm21/tmtest.adb, tmtests/tm21/tmtest.ads, tmtests/tm22/tmtest.adb, tmtests/tm22/tmtest.ads, tmtests/tm23/tmtest.adb, tmtests/tm23/tmtest.ads, tmtests/tm24/tmtest.adb, tmtests/tm24/tmtest.ads, tmtests/tm25/tmtest.adb, tmtests/tm25/tmtest.ads, tmtests/tm28/tmtest.adb, tmtests/tm28/tmtest.ads, tmtests/tm29/tmtest.adb, tmtests/tm29/tmtest.ads, tmtests/tmck/tmtest.adb, tmtests/tmck/tmtest.ads, tmtests/tmoverhd/dummy_rtems.adb, tmtests/tmoverhd/tmtest.adb, tmtests/tmoverhd/tmtest.ads: Remove many warnings.
  • Property mode set to 100644
File size: 6.3 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-2009.
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 RTEMS_CALLING_OVERHEAD;
24with TEST_SUPPORT;
25with TEXT_IO;
26with TIMER_DRIVER;
27
28package body TMTEST is
29
30--PAGE
31--
32--  INIT
33--
34
35   procedure INIT (
36      ARGUMENT : in     RTEMS.TASK_ARGUMENT
37   ) is
38      pragma Unreferenced(ARGUMENT);
39      STATUS  : RTEMS.STATUS_CODES;
40   begin
41
42      TEXT_IO.NEW_LINE( 2 );
43      TEXT_IO.PUT_LINE( "*** TIME TEST 15 ***" );
44
45      TMTEST.TEST_INIT;
46
47      RTEMS.TASK_DELETE( RTEMS.SELF, STATUS );
48      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_DELETE OF SELF" );
49
50   end INIT;
51
52--PAGE
53--
54--  TEST_INIT
55--
56
57   procedure TEST_INIT
58   is
59      ID        : RTEMS.ID;
60      OVERHEAD  : RTEMS.UNSIGNED32;
61      EVENT_OUT : RTEMS.EVENT_SET;
62      STATUS    : RTEMS.STATUS_CODES;
63   begin
64
65      TMTEST.TIME_SET := FALSE;
66
67      RTEMS.TASK_CREATE(
68         RTEMS.BUILD_NAME( 'L', 'O', 'W', ' ' ),
69         10,
70         1024,
71         RTEMS.NO_PREEMPT,
72         RTEMS.DEFAULT_ATTRIBUTES,
73         ID,
74         STATUS
75      );
76      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_CREATE LOW" );
77
78      RTEMS.TASK_START( ID, TMTEST.LOW_TASK'ACCESS, 0, STATUS );
79      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_START LOW" );
80
81      for INDEX in 1 .. TIME_TEST_SUPPORT.OPERATION_COUNT
82      loop
83
84         RTEMS.TASK_CREATE(
85            RTEMS.BUILD_NAME( 'H', 'I', 'G', 'H' ),
86            5,
87            1024,
88            RTEMS.DEFAULT_MODES,
89            RTEMS.DEFAULT_ATTRIBUTES,
90            TMTEST.TASK_ID( INDEX ),
91            STATUS
92         );
93         TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_CREATE LOOP" );
94
95         RTEMS.TASK_START(
96            TMTEST.TASK_ID( INDEX ),
97            TMTEST.HIGH_TASKS'ACCESS,
98            0,
99            STATUS
100         );
101         TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_START LOOP" );
102
103      end loop;
104
105      TIMER_DRIVER.INITIALIZE;
106         for INDEX in 1 .. TIME_TEST_SUPPORT.OPERATION_COUNT
107         loop
108            TIMER_DRIVER.EMPTY_FUNCTION;
109         end loop;
110      OVERHEAD := TIMER_DRIVER.READ_TIMER;
111
112      TIMER_DRIVER.INITIALIZE;
113         for INDEX in 1 .. TIME_TEST_SUPPORT.OPERATION_COUNT
114         loop
115            RTEMS.EVENT_RECEIVE(
116               RTEMS.PENDING_EVENTS,
117               RTEMS.DEFAULT_OPTIONS,
118               RTEMS.NO_TIMEOUT,
119               EVENT_OUT,
120               STATUS
121            );
122         end loop;
123      TMTEST.END_TIME := TIMER_DRIVER.READ_TIMER;
124
125      TIME_TEST_SUPPORT.PUT_TIME(
126         "EVENT_RECEIVE (current)",
127         TMTEST.END_TIME,
128         TIME_TEST_SUPPORT.OPERATION_COUNT,
129         OVERHEAD,
130         RTEMS_CALLING_OVERHEAD.EVENT_RECEIVE
131      );
132
133      TIMER_DRIVER.INITIALIZE;
134         for INDEX in 1 .. TIME_TEST_SUPPORT.OPERATION_COUNT
135         loop
136            RTEMS.EVENT_RECEIVE(
137               RTEMS.ALL_EVENTS,
138               RTEMS.NO_WAIT,
139               RTEMS.NO_TIMEOUT,
140               EVENT_OUT,
141               STATUS
142            );
143         end loop;
144      TMTEST.END_TIME := TIMER_DRIVER.READ_TIMER;
145
146      TIME_TEST_SUPPORT.PUT_TIME(
147         "EVENT_RECEIVE (NO_WAIT)",
148         TMTEST.END_TIME,
149         TIME_TEST_SUPPORT.OPERATION_COUNT,
150         OVERHEAD,
151         RTEMS_CALLING_OVERHEAD.EVENT_RECEIVE
152      );
153
154   end TEST_INIT;
155
156--PAGE
157--
158--  LOW_TASK
159--
160
161   procedure LOW_TASK (
162      ARGUMENT : in     RTEMS.TASK_ARGUMENT
163   ) is
164      pragma Unreferenced(ARGUMENT);
165      EVENT_OUT : RTEMS.EVENT_SET;
166      OVERHEAD  : RTEMS.UNSIGNED32;
167      STATUS    : RTEMS.STATUS_CODES;
168   begin
169   
170      TMTEST.END_TIME := TIMER_DRIVER.READ_TIMER;
171
172      TIME_TEST_SUPPORT.PUT_TIME(
173         "EVENT_RECEIVE (blocking)",
174         TMTEST.END_TIME,
175         TIME_TEST_SUPPORT.OPERATION_COUNT,
176         0,
177         RTEMS_CALLING_OVERHEAD.EVENT_RECEIVE
178      );
179
180      TIMER_DRIVER.INITIALIZE;
181         for INDEX in 1 .. TIME_TEST_SUPPORT.OPERATION_COUNT
182         loop
183            TIMER_DRIVER.EMPTY_FUNCTION;
184         end loop;
185      OVERHEAD := TIMER_DRIVER.READ_TIMER;
186
187      TIMER_DRIVER.INITIALIZE;
188         for INDEX in 1 .. TIME_TEST_SUPPORT.OPERATION_COUNT
189         loop
190            RTEMS.EVENT_SEND( RTEMS.SELF, RTEMS.EVENT_16, STATUS );
191         end loop;
192      TMTEST.END_TIME := TIMER_DRIVER.READ_TIMER;
193
194      TIME_TEST_SUPPORT.PUT_TIME(
195         "EVENT_SEND (returns to caller)",
196         TMTEST.END_TIME,
197         TIME_TEST_SUPPORT.OPERATION_COUNT,
198         OVERHEAD,
199         RTEMS_CALLING_OVERHEAD.EVENT_SEND
200      );
201
202      TIMER_DRIVER.INITIALIZE;
203         RTEMS.EVENT_RECEIVE(
204            RTEMS.EVENT_16,
205            RTEMS.DEFAULT_OPTIONS,
206            RTEMS.NO_TIMEOUT,
207            EVENT_OUT,
208            STATUS
209         );
210      TMTEST.END_TIME := TIMER_DRIVER.READ_TIMER;
211
212      TIME_TEST_SUPPORT.PUT_TIME(
213         "EVENT_RECEIVE (available)",
214         TMTEST.END_TIME,
215         1,
216         0,
217         RTEMS_CALLING_OVERHEAD.EVENT_RECEIVE
218      );
219
220      TIMER_DRIVER.INITIALIZE;
221         for INDEX in 1 .. TIME_TEST_SUPPORT.OPERATION_COUNT
222         loop
223            RTEMS.EVENT_SEND(
224               TMTEST.TASK_ID( INDEX ),
225               RTEMS.EVENT_16,
226               STATUS
227            );
228         end loop;
229      TMTEST.END_TIME := TIMER_DRIVER.READ_TIMER;
230
231      TIME_TEST_SUPPORT.PUT_TIME(
232         "EVENT_SEND (readying)",
233         TMTEST.END_TIME,
234         TIME_TEST_SUPPORT.OPERATION_COUNT,
235         OVERHEAD,
236         RTEMS_CALLING_OVERHEAD.EVENT_SEND
237      );
238
239      TEXT_IO.PUT_LINE( "*** END OF TIME TEST 15 ***" );
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      pragma Unreferenced(ARGUMENT);
253      EVENT_OUT : RTEMS.EVENT_SET;
254      STATUS    : RTEMS.STATUS_CODES;
255   begin
256
257      if TMTEST.TIME_SET = FALSE then
258         TMTEST.TIME_SET := TRUE;
259         TIMER_DRIVER.INITIALIZE;
260      end if;
261
262      RTEMS.EVENT_RECEIVE(
263         16#7FFFFFFF#,
264         RTEMS.DEFAULT_OPTIONS,
265         RTEMS.NO_TIMEOUT,
266         EVENT_OUT,
267         STATUS
268      );
269   
270   end HIGH_TASKS;
271
272end TMTEST;
Note: See TracBrowser for help on using the repository browser.