source: rtems/c/src/ada-tests/sptests/sp25/sptest.adb @ 48bfd992

4.104.114.84.95
Last change on this file since 48bfd992 was f222e9d4, checked in by Joel Sherrill <joel.sherrill@…>, on 06/03/97 at 19:26:36

Removed unnecessary dependency on RTEMS_Test_Support which existed
in the RTEMS Ada implementation but does not exist in this binding.

  • Property mode set to 100644
File size: 10.7 KB
Line 
1--
2--  SPTEST / BODY
3--
4--  DESCRIPTION:
5--
6--  This package is the implementation of Test 25 of the RTEMS
7--  Single Processor 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 TEST_SUPPORT;
27with TEXT_IO;
28with UNSIGNED32_IO;
29
30package body SPTEST is
31
32--PAGE
33--
34--  INIT
35--
36
37   procedure INIT (
38      ARGUMENT : in     RTEMS.TASK_ARGUMENT
39   ) is
40      STATUS : RTEMS.STATUS_CODES;
41   begin
42
43      TEXT_IO.NEW_LINE( 2 );
44      TEXT_IO.PUT_LINE( "*** TEST 25 ***" );
45
46      SPTEST.TASK_NAME( 1 ) := RTEMS.BUILD_NAME(  'T', 'A', '1', ' ' );
47
48      RTEMS.TASK_CREATE(
49         SPTEST.TASK_NAME( 1 ),
50         SPTEST.BASE_PRIORITY,
51         2048,
52         RTEMS.DEFAULT_MODES,
53         RTEMS.DEFAULT_ATTRIBUTES,
54         SPTEST.TASK_ID( 1 ),
55         STATUS
56      );
57      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_CREATE OF TA1" );
58
59      RTEMS.TASK_START(
60         SPTEST.TASK_ID( 1 ),
61         SPTEST.TASK_1'ACCESS,
62         0,
63         STATUS
64      );
65      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_START OF TA1" );
66
67      SPTEST.REGION_NAME( 1 ) := RTEMS.BUILD_NAME(  'R', 'N', '1', ' ' );
68
69      RTEMS.REGION_CREATE(
70         SPTEST.REGION_NAME( 1 ),
71         SPTEST.AREA_1'ADDRESS,
72         64000,
73         32,
74         RTEMS.DEFAULT_ATTRIBUTES,
75         SPTEST.REGION_ID( 1 ),
76         STATUS
77      );
78      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "REGION_CREATE OF RN1" );
79
80      RTEMS.TASK_DELETE( RTEMS.SELF, STATUS );
81      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_DELETE OF SELF" );
82
83   end INIT;
84
85--PAGE
86--
87--  PUT_ADDRESS_FROM_AREA_1
88--
89
90   procedure PUT_ADDRESS_FROM_AREA_1 (
91      TO_BE_PRINTED : in     RTEMS.ADDRESS
92   ) is
93
94   begin
95
96      UNSIGNED32_IO.PUT(
97         RTEMS.SUBTRACT( TO_BE_PRINTED, SPTEST.AREA_1'ADDRESS ),
98         WIDTH => 8,
99         BASE => 16
100      );
101
102   end PUT_ADDRESS_FROM_AREA_1;
103
104--PAGE
105--
106--  TASK_1
107--
108
109   procedure TASK_1 (
110      ARGUMENT : in     RTEMS.TASK_ARGUMENT
111   ) is
112      RNID              : RTEMS.ID;
113      SEGMENT_ADDRESS_1 : RTEMS.ADDRESS;
114      SEGMENT_ADDRESS_2 : RTEMS.ADDRESS;
115      SEGMENT_ADDRESS_3 : RTEMS.ADDRESS;
116      SEGMENT_ADDRESS_4 : RTEMS.ADDRESS;
117      SEGMENT_ADDRESS_5 : RTEMS.ADDRESS;
118      SEGMENT_ADDRESS_6 : RTEMS.ADDRESS;
119      SEGMENT_ADDRESS_7 : RTEMS.ADDRESS;
120      SEGMENT_ADDRESS_8 : RTEMS.ADDRESS;
121      STATUS            : RTEMS.STATUS_CODES;
122   begin
123
124      RTEMS.REGION_IDENT( SPTEST.REGION_NAME( 1 ), RNID, STATUS );
125      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "REGION_IDENT OF RN1" );
126      TEXT_IO.PUT( "TA1 - region_ident - rnid => " );
127      UNSIGNED32_IO.PUT( RNID, WIDTH => 8, BASE => 16 );
128      TEXT_IO.NEW_LINE;
129       
130      TEXT_IO.PUT( "TA1 - region_get_segment - wait on " );
131      TEXT_IO.PUT_LINE( "64 byte segment from region 1" );
132      RTEMS.REGION_GET_SEGMENT(
133         SPTEST.REGION_ID( 1 ),
134         64,
135         RTEMS.DEFAULT_OPTIONS,
136         RTEMS.NO_TIMEOUT,
137         SEGMENT_ADDRESS_1,
138         STATUS
139      );
140      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "REGION_GET_SEGMENT" );
141      TEXT_IO.PUT( "TA1 - got segment from region 1 - " );
142      SPTEST.PUT_ADDRESS_FROM_AREA_1( SEGMENT_ADDRESS_1 );
143      TEXT_IO.NEW_LINE;
144
145      TEXT_IO.PUT( "TA1 - region_get_segment - wait on " );
146      TEXT_IO.PUT_LINE( "128 byte segment from region 1" );
147      RTEMS.REGION_GET_SEGMENT(
148         SPTEST.REGION_ID( 1 ),
149         128,
150         RTEMS.DEFAULT_OPTIONS,
151         RTEMS.NO_TIMEOUT,
152         SEGMENT_ADDRESS_2,
153         STATUS
154      );
155      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "REGION_GET_SEGMENT" );
156      TEXT_IO.PUT( "TA1 - got segment from region 1 - " );
157      SPTEST.PUT_ADDRESS_FROM_AREA_1( SEGMENT_ADDRESS_2 );
158      TEXT_IO.NEW_LINE;
159
160      TEXT_IO.PUT( "TA1 - region_get_segment - wait on " );
161      TEXT_IO.PUT_LINE( "256 byte segment from region 1" );
162      RTEMS.REGION_GET_SEGMENT(
163         SPTEST.REGION_ID( 1 ),
164         256,
165         RTEMS.DEFAULT_OPTIONS,
166         RTEMS.NO_TIMEOUT,
167         SEGMENT_ADDRESS_3,
168         STATUS
169      );
170      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "REGION_GET_SEGMENT" );
171      TEXT_IO.PUT( "TA1 - got segment from region 1 - " );
172      SPTEST.PUT_ADDRESS_FROM_AREA_1( SEGMENT_ADDRESS_3 );
173      TEXT_IO.NEW_LINE;
174
175      TEXT_IO.PUT( "TA1 - region_get_segment - wait on " );
176      TEXT_IO.PUT_LINE( "512 byte segment from region 1" );
177      RTEMS.REGION_GET_SEGMENT(
178         SPTEST.REGION_ID( 1 ),
179         512,
180         RTEMS.DEFAULT_OPTIONS,
181         RTEMS.NO_TIMEOUT,
182         SEGMENT_ADDRESS_4,
183         STATUS
184      );
185      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "REGION_GET_SEGMENT" );
186      TEXT_IO.PUT( "TA1 - got segment from region 1 - " );
187      SPTEST.PUT_ADDRESS_FROM_AREA_1( SEGMENT_ADDRESS_4 );
188      TEXT_IO.NEW_LINE;
189
190      TEXT_IO.PUT( "TA1 - region_get_segment - wait on " );
191      TEXT_IO.PUT_LINE( "1024 byte segment from region 1" );
192      RTEMS.REGION_GET_SEGMENT(
193         SPTEST.REGION_ID( 1 ),
194         1024,
195         RTEMS.DEFAULT_OPTIONS,
196         RTEMS.NO_TIMEOUT,
197         SEGMENT_ADDRESS_5,
198         STATUS
199      );
200      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "REGION_GET_SEGMENT" );
201      TEXT_IO.PUT( "TA1 - got segment from region 1 - " );
202      SPTEST.PUT_ADDRESS_FROM_AREA_1( SEGMENT_ADDRESS_5 );
203      TEXT_IO.NEW_LINE;
204
205      TEXT_IO.PUT( "TA1 - region_get_segment - wait on " );
206      TEXT_IO.PUT_LINE( "2048 byte segment from region 1" );
207      RTEMS.REGION_GET_SEGMENT(
208         SPTEST.REGION_ID( 1 ),
209         2048,
210         RTEMS.DEFAULT_OPTIONS,
211         RTEMS.NO_TIMEOUT,
212         SEGMENT_ADDRESS_6,
213         STATUS
214      );
215      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "REGION_GET_SEGMENT" );
216      TEXT_IO.PUT( "TA1 - got segment from region 1 - " );
217      SPTEST.PUT_ADDRESS_FROM_AREA_1( SEGMENT_ADDRESS_6 );
218      TEXT_IO.NEW_LINE;
219
220      TEXT_IO.PUT( "TA1 - region_get_segment - wait on " );
221      TEXT_IO.PUT_LINE( "4096 byte segment from region 1" );
222      RTEMS.REGION_GET_SEGMENT(
223         SPTEST.REGION_ID( 1 ),
224         4096,
225         RTEMS.DEFAULT_OPTIONS,
226         RTEMS.NO_TIMEOUT,
227         SEGMENT_ADDRESS_7,
228         STATUS
229      );
230      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "REGION_GET_SEGMENT" );
231      TEXT_IO.PUT( "TA1 - got segment from region 1 - " );
232      SPTEST.PUT_ADDRESS_FROM_AREA_1( SEGMENT_ADDRESS_7 );
233      TEXT_IO.NEW_LINE;
234
235      TEXT_IO.PUT( "TA1 - region_get_segment - wait on " );
236      TEXT_IO.PUT_LINE( "8192 byte segment from region 1" );
237      RTEMS.REGION_GET_SEGMENT(
238         SPTEST.REGION_ID( 1 ),
239         8192,
240         RTEMS.DEFAULT_OPTIONS,
241         RTEMS.NO_TIMEOUT,
242         SEGMENT_ADDRESS_8,
243         STATUS
244      );
245      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "REGION_GET_SEGMENT" );
246      TEXT_IO.PUT( "TA1 - got segment from region 1 - " );
247      SPTEST.PUT_ADDRESS_FROM_AREA_1( SEGMENT_ADDRESS_8 );
248      TEXT_IO.NEW_LINE;
249
250TEST_SUPPORT.PAUSE;
251
252      TEXT_IO.PUT(
253         "TA1 - region_return_segment - return segment to region 1 - "
254      );
255      SPTEST.PUT_ADDRESS_FROM_AREA_1( SEGMENT_ADDRESS_3 );
256      RTEMS.REGION_RETURN_SEGMENT(
257         SPTEST.REGION_ID( 1 ),
258         SEGMENT_ADDRESS_3,
259         STATUS
260      );
261      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "REGION_RETURN_SEGMENT" );
262      TEXT_IO.NEW_LINE;
263      SEGMENT_ADDRESS_3 := RTEMS.NULL_ADDRESS;
264
265      TEXT_IO.PUT(
266         "TA1 - region_return_segment - return segment to region 1 - "
267      );
268      SPTEST.PUT_ADDRESS_FROM_AREA_1( SEGMENT_ADDRESS_4 );
269      RTEMS.REGION_RETURN_SEGMENT(
270         SPTEST.REGION_ID( 1 ),
271         SEGMENT_ADDRESS_4,
272         STATUS
273      );
274      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "REGION_RETURN_SEGMENT" );
275      TEXT_IO.NEW_LINE;
276      SEGMENT_ADDRESS_4 := RTEMS.NULL_ADDRESS;
277
278      TEXT_IO.PUT(
279         "TA1 - region_return_segment - return segment to region 1 - "
280      );
281      SPTEST.PUT_ADDRESS_FROM_AREA_1( SEGMENT_ADDRESS_1 );
282      RTEMS.REGION_RETURN_SEGMENT(
283         SPTEST.REGION_ID( 1 ),
284         SEGMENT_ADDRESS_1,
285         STATUS
286      );
287      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "REGION_RETURN_SEGMENT" );
288      TEXT_IO.NEW_LINE;
289      SEGMENT_ADDRESS_1 := RTEMS.NULL_ADDRESS;
290
291      TEXT_IO.PUT(
292         "TA1 - region_return_segment - return segment to region 1 - "
293      );
294      SPTEST.PUT_ADDRESS_FROM_AREA_1( SEGMENT_ADDRESS_2 );
295      RTEMS.REGION_RETURN_SEGMENT(
296         SPTEST.REGION_ID( 1 ),
297         SEGMENT_ADDRESS_2,
298         STATUS
299      );
300      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "REGION_RETURN_SEGMENT" );
301      TEXT_IO.NEW_LINE;
302      SEGMENT_ADDRESS_2 := RTEMS.NULL_ADDRESS;
303
304      TEXT_IO.PUT(
305         "TA1 - region_return_segment - return segment to region 1 - "
306      );
307      SPTEST.PUT_ADDRESS_FROM_AREA_1( SEGMENT_ADDRESS_7 );
308      RTEMS.REGION_RETURN_SEGMENT(
309         SPTEST.REGION_ID( 1 ),
310         SEGMENT_ADDRESS_7,
311         STATUS
312      );
313      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "REGION_RETURN_SEGMENT" );
314      TEXT_IO.NEW_LINE;
315      SEGMENT_ADDRESS_7 := RTEMS.NULL_ADDRESS;
316
317      TEXT_IO.PUT(
318         "TA1 - region_return_segment - return segment to region 1 - "
319      );
320      SPTEST.PUT_ADDRESS_FROM_AREA_1( SEGMENT_ADDRESS_6 );
321      RTEMS.REGION_RETURN_SEGMENT(
322         SPTEST.REGION_ID( 1 ),
323         SEGMENT_ADDRESS_6,
324         STATUS
325      );
326      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "REGION_RETURN_SEGMENT" );
327      TEXT_IO.NEW_LINE;
328      SEGMENT_ADDRESS_6 := RTEMS.NULL_ADDRESS;
329
330      TEXT_IO.PUT(
331         "TA1 - region_return_segment - return segment to region 1 - "
332      );
333      SPTEST.PUT_ADDRESS_FROM_AREA_1( SEGMENT_ADDRESS_8 );
334      RTEMS.REGION_RETURN_SEGMENT(
335         SPTEST.REGION_ID( 1 ),
336         SEGMENT_ADDRESS_8,
337         STATUS
338      );
339      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "REGION_RETURN_SEGMENT" );
340      TEXT_IO.NEW_LINE;
341      SEGMENT_ADDRESS_8 := RTEMS.NULL_ADDRESS;
342
343      TEXT_IO.PUT(
344         "TA1 - region_return_segment - return segment to region 1 - "
345      );
346      SPTEST.PUT_ADDRESS_FROM_AREA_1( SEGMENT_ADDRESS_5 );
347      RTEMS.REGION_RETURN_SEGMENT(
348         SPTEST.REGION_ID( 1 ),
349         SEGMENT_ADDRESS_5,
350         STATUS
351      );
352      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "REGION_RETURN_SEGMENT" );
353      TEXT_IO.NEW_LINE;
354      SEGMENT_ADDRESS_5 := RTEMS.NULL_ADDRESS;
355
356      TEXT_IO.PUT_LINE(
357         "TA1 - region_delete - walks heap if debug enabled"
358      );
359      RTEMS.REGION_DELETE( SPTEST.REGION_ID( 1 ), STATUS );
360      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "REGION_DELETE OF RN1" );
361
362      TEXT_IO.PUT_LINE( "*** END OF TEST 25 ***" );
363      RTEMS.SHUTDOWN_EXECUTIVE( 0 );
364
365   end TASK_1;
366
367end SPTEST;
Note: See TracBrowser for help on using the repository browser.