source: rtems/c/src/ada-tests/tmtests/tm19/tmtest.adb @ 16e8d3d

4.104.114.84.95
Last change on this file since 16e8d3d was 820901ba, checked in by Joel Sherrill <joel.sherrill@…>, on 05/03/05 at 21:41:45

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: 5.8 KB
Line 
1--
2--  TMTEST / BODY
3--
4--  DESCRIPTION:
5--
6--  This package is the implementation of Test 19 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 19 ***" );
46
47      RTEMS.TASK_CREATE(
48         RTEMS.BUILD_NAME( 'T', 'I', 'M', 'E' ),
49         128,
50         1024,
51         RTEMS.DEFAULT_MODES,
52         RTEMS.DEFAULT_ATTRIBUTES,
53         TMTEST.TASK_ID( 1 ),
54         STATUS
55      );
56      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_CREATE OF TASK1" );
57
58      RTEMS.TASK_START(
59         TMTEST.TASK_ID( 1 ),
60         TMTEST.TASK_1'ACCESS,
61         0,
62         STATUS
63      );
64      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_START OF TASK1" );
65
66      RTEMS.TASK_CREATE(
67         RTEMS.BUILD_NAME( 'T', 'I', 'M', 'E' ),
68         127,
69         1024,
70         RTEMS.DEFAULT_MODES,
71         RTEMS.DEFAULT_ATTRIBUTES,
72         TMTEST.TASK_ID( 2 ),
73         STATUS
74      );
75      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_CREATE OF TASK2" );
76
77      RTEMS.TASK_START(
78         TMTEST.TASK_ID( 2 ),
79         TMTEST.TASK_2'ACCESS,
80         0,
81         STATUS
82      );
83      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_START OF TASK2" );
84
85      RTEMS.TASK_CREATE(
86         RTEMS.BUILD_NAME( 'T', 'I', 'M', 'E' ),
87         126,
88         1024,
89         RTEMS.DEFAULT_MODES,
90         RTEMS.DEFAULT_ATTRIBUTES,
91         TMTEST.TASK_ID( 3 ),
92         STATUS
93      );
94      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_CREATE OF TASK3" );
95
96      RTEMS.TASK_START(
97         TMTEST.TASK_ID( 3 ),
98         TMTEST.TASK_3'ACCESS,
99         0,
100         STATUS
101      );
102      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_START OF TASK3" );
103
104      RTEMS.TASK_DELETE( RTEMS.SELF, STATUS );
105      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_DELETE OF SELF" );
106
107   end INIT;
108
109--PAGE
110--
111--  PROCESS_ASR_FOR_PASS_1
112--
113
114   procedure PROCESS_ASR_FOR_PASS_1 (
115      SIGNALS : in     RTEMS.SIGNAL_SET
116   ) is
117   begin
118
119      TMTEST.END_TIME := TIMER_DRIVER.READ_TIMER;
120
121      TIME_TEST_SUPPORT.PUT_TIME(
122         "SIGNAL_SEND (self)",
123         TMTEST.END_TIME,
124         1,
125         0,
126         RTEMS_CALLING_OVERHEAD.SIGNAL_SEND
127      );
128
129      TEXT_IO.PUT_LINE( "SIGNAL_ENTER (preemptive) na" );
130
131      TIMER_DRIVER.INITIALIZE;
132
133   end PROCESS_ASR_FOR_PASS_1;
134
135--PAGE
136--
137--  PROCESS_ASR_FOR_PASS_2
138--
139
140   procedure PROCESS_ASR_FOR_PASS_2 (
141      SIGNALS : in     RTEMS.SIGNAL_SET
142   ) is
143      STATUS  : RTEMS.STATUS_CODES;
144   begin
145
146      TEXT_IO.PUT_LINE( "SIGNAL_ENTER (preemptive) na" );
147     
148      RTEMS.TASK_RESUME( TMTEST.TASK_ID( 3 ), STATUS );
149      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_RESUME" );
150
151      TIMER_DRIVER.INITIALIZE;
152
153   end PROCESS_ASR_FOR_PASS_2;
154
155--PAGE
156--
157--  TASK_1
158--
159
160   procedure TASK_1 (
161      ARGUMENT : in     RTEMS.TASK_ARGUMENT
162   ) is
163      STATUS  : RTEMS.STATUS_CODES;
164   begin
165
166      TIMER_DRIVER.INITIALIZE;
167         RTEMS.SIGNAL_CATCH(
168            TMTEST.PROCESS_ASR_FOR_PASS_1'ACCESS,
169            RTEMS.DEFAULT_MODES,
170            STATUS
171         );
172      TMTEST.END_TIME := TIMER_DRIVER.READ_TIMER;
173
174      TIME_TEST_SUPPORT.PUT_TIME(
175         "SIGNAL_CATCH",
176         TMTEST.END_TIME,
177         1,
178         0,
179         RTEMS_CALLING_OVERHEAD.SIGNAL_CATCH
180      );
181
182      TIMER_DRIVER.INITIALIZE;
183         RTEMS.SIGNAL_SEND( TMTEST.TASK_ID( 2 ), RTEMS.SIGNAL_1, STATUS );
184      TMTEST.END_TIME := TIMER_DRIVER.READ_TIMER;
185
186      TIME_TEST_SUPPORT.PUT_TIME(
187         "SIGNAL_SEND (non-preemptive)",
188         TMTEST.END_TIME,
189         1,
190         0,
191         RTEMS_CALLING_OVERHEAD.SIGNAL_SEND
192      );
193
194      TIMER_DRIVER.INITIALIZE;
195         RTEMS.SIGNAL_SEND( RTEMS.SELF, RTEMS.SIGNAL_1, STATUS );
196
197      -- end time is done in ASR
198
199      TMTEST.END_TIME := TIMER_DRIVER.READ_TIMER;
200
201      TIME_TEST_SUPPORT.PUT_TIME(
202         "SIGNAL_RETURN (non-preemptive)",
203         TMTEST.END_TIME,
204         1,
205         0,
206         0
207      );
208
209      RTEMS.SIGNAL_CATCH(
210         TMTEST.PROCESS_ASR_FOR_PASS_2'ACCESS,
211         RTEMS.NO_PREEMPT,
212         STATUS
213      );
214      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "SIGNAL_CATCH" );
215
216      TIMER_DRIVER.INITIALIZE;
217         RTEMS.SIGNAL_SEND( RTEMS.SELF, RTEMS.SIGNAL_1, STATUS );
218
219   end TASK_1;
220
221--PAGE
222--
223--  PROCESS_ASR_FOR_TASK_2
224--
225
226   procedure PROCESS_ASR_FOR_TASK_2 (
227      SIGNALS : in     RTEMS.SIGNAL_SET
228   ) is
229   begin
230
231      NULL;
232
233   end PROCESS_ASR_FOR_TASK_2;
234
235--PAGE
236--
237--  TASK_2
238--
239
240   procedure TASK_2 (
241      ARGUMENT : in     RTEMS.TASK_ARGUMENT
242   ) is
243      STATUS  : RTEMS.STATUS_CODES;
244   begin
245
246      RTEMS.SIGNAL_CATCH(
247         TMTEST.PROCESS_ASR_FOR_TASK_2'ACCESS,
248         RTEMS.DEFAULT_MODES,
249         STATUS
250      );
251      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "SIGNAL_CATCH" );
252
253      RTEMS.TASK_SUSPEND( RTEMS.SELF, STATUS );
254
255   end TASK_2;
256
257--PAGE
258--
259--  TASK_3
260--
261
262   procedure TASK_3 (
263      ARGUMENT : in     RTEMS.TASK_ARGUMENT
264   ) is
265      STATUS : RTEMS.STATUS_CODES;
266   begin
267
268      RTEMS.TASK_SUSPEND( RTEMS.SELF, STATUS );
269
270      TMTEST.END_TIME := TIMER_DRIVER.READ_TIMER;
271
272      TIME_TEST_SUPPORT.PUT_TIME(
273         "SIGNAL_RETURN (preemptive)",
274         TMTEST.END_TIME,
275         1,
276         0,
277         0
278     );
279
280     RTEMS.SHUTDOWN_EXECUTIVE( 0 );
281
282   end TASK_3;
283
284end TMTEST;
Note: See TracBrowser for help on using the repository browser.