source: rtems/c/src/ada-tests/sptests/sp16/sptest.adb @ 1bce637

4.104.114.84.95
Last change on this file since 1bce637 was bf9ae83, checked in by Joel Sherrill <joel.sherrill@…>, on 06/02/97 at 20:32:11

modified copyright notice to be the same as RTEMS 4.0.0.

changed the CVS ID string to be a "development" version.

  • Property mode set to 100644
File size: 19.5 KB
Line 
1--
2--  SPTEST / BODY
3--
4--  DESCRIPTION:
5--
6--  This package is the implementation of Test 16 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 16 ***" );
45
46      SPTEST.TASK_NAME( 1 ) := RTEMS.BUILD_NAME(  'T', 'A', '1', ' ' );
47      SPTEST.TASK_NAME( 2 ) := RTEMS.BUILD_NAME(  'T', 'A', '2', ' ' );
48      SPTEST.TASK_NAME( 3 ) := RTEMS.BUILD_NAME(  'T', 'A', '3', ' ' );
49      SPTEST.TASK_NAME( 4 ) := RTEMS.BUILD_NAME(  'T', 'A', '4', ' ' );
50      SPTEST.TASK_NAME( 5 ) := RTEMS.BUILD_NAME(  'T', 'A', '5', ' ' );
51
52      RTEMS.TASK_CREATE(
53         SPTEST.TASK_NAME( 1 ),
54         SPTEST.BASE_PRIORITY,
55         2048,
56         RTEMS.DEFAULT_MODES,
57         RTEMS.DEFAULT_ATTRIBUTES,
58         SPTEST.TASK_ID( 1 ),
59         STATUS
60      );
61      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_CREATE OF TA1" );
62
63      RTEMS.TASK_CREATE(
64         SPTEST.TASK_NAME( 2 ),
65         SPTEST.BASE_PRIORITY,
66         2048,
67         RTEMS.DEFAULT_MODES,
68         RTEMS.DEFAULT_ATTRIBUTES,
69         SPTEST.TASK_ID( 2 ),
70         STATUS
71      );
72      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_CREATE OF TA2" );
73
74      RTEMS.TASK_CREATE(
75         SPTEST.TASK_NAME( 3 ),
76         SPTEST.BASE_PRIORITY,
77         2048,
78         RTEMS.DEFAULT_MODES,
79         RTEMS.DEFAULT_ATTRIBUTES,
80         SPTEST.TASK_ID( 3 ),
81         STATUS
82      );
83      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_CREATE OF TA3" );
84
85      RTEMS.TASK_START(
86         SPTEST.TASK_ID( 1 ),
87         SPTEST.TASK_1'ACCESS,
88         0,
89         STATUS
90      );
91      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_START OF TA1" );
92
93      RTEMS.TASK_START(
94         SPTEST.TASK_ID( 2 ),
95         SPTEST.TASK_2'ACCESS,
96         0,
97         STATUS
98      );
99      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_START OF TA2" );
100
101      RTEMS.TASK_START(
102         SPTEST.TASK_ID( 3 ),
103         SPTEST.TASK_3'ACCESS,
104         0,
105         STATUS
106      );
107      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_START OF TA3" );
108
109      SPTEST.REGION_NAME( 1 ) := RTEMS.BUILD_NAME(  'R', 'N', '1', ' ' );
110      SPTEST.REGION_NAME( 2 ) := RTEMS.BUILD_NAME(  'R', 'N', '1', ' ' );
111      SPTEST.REGION_NAME( 3 ) := RTEMS.BUILD_NAME(  'R', 'N', '1', ' ' );
112
113      RTEMS.REGION_CREATE(
114         SPTEST.REGION_NAME( 1 ),
115         SPTEST.AREA_1'ADDRESS,
116         4096,
117         128,
118         RTEMS.DEFAULT_ATTRIBUTES,
119         SPTEST.REGION_ID( 1 ),
120         STATUS
121      );
122      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "REGION_CREATE OF RN1" );
123
124      RTEMS.REGION_CREATE(
125         SPTEST.REGION_NAME( 2 ),
126         SPTEST.AREA_2'ADDRESS,
127         4096,
128         128,
129         RTEMS.PRIORITY,
130         SPTEST.REGION_ID( 2 ),
131         STATUS
132      );
133      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "REGION_CREATE OF RN2" );
134
135      RTEMS.REGION_CREATE(
136         SPTEST.REGION_NAME( 3 ),
137         SPTEST.AREA_3'ADDRESS,
138         4096,
139         128,
140         RTEMS.DEFAULT_ATTRIBUTES,
141         SPTEST.REGION_ID( 3 ),
142         STATUS
143      );
144      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "REGION_CREATE OF RN3" );
145
146 
147      RTEMS.TASK_DELETE( RTEMS.SELF, STATUS );
148      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_DELETE OF SELF" );
149
150   end INIT;
151
152--PAGE
153--
154--  PUT_ADDRESS_FROM_AREA_1
155--
156
157   procedure PUT_ADDRESS_FROM_AREA_1 (
158      TO_BE_PRINTED : in     RTEMS.ADDRESS
159   ) is
160
161   begin
162
163      UNSIGNED32_IO.PUT(
164         RTEMS.SUBTRACT( TO_BE_PRINTED, SPTEST.AREA_1'ADDRESS ),
165         WIDTH => 8,
166         BASE => 16
167      );
168
169   end PUT_ADDRESS_FROM_AREA_1;
170
171--PAGE
172--
173--  PUT_ADDRESS_FROM_AREA_2
174--
175
176   procedure PUT_ADDRESS_FROM_AREA_2 (
177      TO_BE_PRINTED : in     RTEMS.ADDRESS
178   ) is
179   begin
180
181      UNSIGNED32_IO.PUT(
182         RTEMS.SUBTRACT( TO_BE_PRINTED, SPTEST.AREA_2'ADDRESS ),
183         WIDTH => 8,
184         BASE => 16
185      );
186
187   end PUT_ADDRESS_FROM_AREA_2;
188
189--PAGE
190--
191--  PUT_ADDRESS_FROM_AREA_3
192--
193
194   procedure PUT_ADDRESS_FROM_AREA_3 (
195      TO_BE_PRINTED : in     RTEMS.ADDRESS
196   ) is
197   begin
198
199      UNSIGNED32_IO.PUT(
200         RTEMS.SUBTRACT( TO_BE_PRINTED, SPTEST.AREA_3'ADDRESS ),
201         WIDTH => 8,
202         BASE => 16
203      );
204
205   end PUT_ADDRESS_FROM_AREA_3;
206
207--PAGE
208--
209--  TASK_1
210--
211
212   procedure TASK_1 (
213      ARGUMENT : in     RTEMS.TASK_ARGUMENT
214   ) is
215      RNID              : RTEMS.ID;
216      SEGMENT_ADDRESS_1 : RTEMS.ADDRESS;
217      SEGMENT_ADDRESS_2 : RTEMS.ADDRESS;
218      SEGMENT_ADDRESS_3 : RTEMS.ADDRESS;
219      SEGMENT_ADDRESS_4 : RTEMS.ADDRESS;
220      STATUS            : RTEMS.STATUS_CODES;
221   begin
222
223      RTEMS.REGION_IDENT( SPTEST.REGION_NAME( 1 ), RNID, STATUS );
224      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "REGION_IDENT OF RN1" );
225      TEXT_IO.PUT( "TA1 - region_ident - rnid => " );
226      UNSIGNED32_IO.PUT( RNID, WIDTH => 8, BASE => 16 );
227      TEXT_IO.NEW_LINE;
228       
229      TEXT_IO.PUT( "TA1 - region_get_segment - wait on " );
230      TEXT_IO.PUT_LINE( "100 byte segment from region 2" );
231      RTEMS.REGION_GET_SEGMENT(
232         SPTEST.REGION_ID( 2 ),
233         100,
234         RTEMS.DEFAULT_OPTIONS,
235         RTEMS.NO_TIMEOUT,
236         SEGMENT_ADDRESS_1,
237         STATUS
238      );
239      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "REGION_GET_SEGMENT" );
240      TEXT_IO.PUT( "TA1 - got segment from region 2 - " );
241      SPTEST.PUT_ADDRESS_FROM_AREA_2( SEGMENT_ADDRESS_1 );
242      TEXT_IO.NEW_LINE;
243
244      TEXT_IO.PUT( "TA1 - region_get_segment - wait on " );
245      TEXT_IO.PUT_LINE( "3K segment from region 3" );
246      RTEMS.REGION_GET_SEGMENT(
247         SPTEST.REGION_ID( 3 ),
248         3072,
249         RTEMS.DEFAULT_OPTIONS,
250         RTEMS.NO_TIMEOUT,
251         SEGMENT_ADDRESS_2,
252         STATUS
253      );
254      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "REGION_GET_SEGMENT" );
255      TEXT_IO.PUT( "TA1 - got segment from region 3 - " );
256      SPTEST.PUT_ADDRESS_FROM_AREA_3( SEGMENT_ADDRESS_2 );
257      TEXT_IO.NEW_LINE;
258
259      TEXT_IO.PUT( "TA1 - region_get_segment - get 3080 byte segment " );
260      TEXT_IO.PUT_LINE( "from region 1 - NO_WAIT" );
261      RTEMS.REGION_GET_SEGMENT(
262         SPTEST.REGION_ID( 1 ),
263         3080,
264         RTEMS.NO_WAIT,
265         RTEMS.NO_TIMEOUT,
266         SEGMENT_ADDRESS_3,
267         STATUS
268      );
269      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "REGION_GET_SEGMENT" );
270      TEXT_IO.PUT( "TA1 - got segment from region 1 - " );
271      SPTEST.PUT_ADDRESS_FROM_AREA_1( SEGMENT_ADDRESS_3 );
272      TEXT_IO.NEW_LINE;
273
274      TEXT_IO.PUT_LINE( "TA1 - task_wake_after - yield processor" );
275      RTEMS.TASK_WAKE_AFTER( RTEMS.YIELD_PROCESSOR, STATUS );
276      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_WAKE_AFTER" );
277   
278TEST_SUPPORT.PAUSE;
279
280      TEXT_IO.PUT(
281         "TA1 - region_return_segment - return segment to region 1 - "
282      );
283      SPTEST.PUT_ADDRESS_FROM_AREA_1( SEGMENT_ADDRESS_3 );
284      RTEMS.REGION_RETURN_SEGMENT(
285         SPTEST.REGION_ID( 1 ),
286         SEGMENT_ADDRESS_3,
287         STATUS
288      );
289      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "REGION_RETURN_SEGMENT" );
290      TEXT_IO.NEW_LINE;
291
292      TEXT_IO.PUT( "TA1 - region_get_segment - wait 10 seconds for 3K " );
293      TEXT_IO.PUT_LINE( "segment from region 1" );
294      RTEMS.REGION_GET_SEGMENT(
295         SPTEST.REGION_ID( 1 ),
296         3072,
297         RTEMS.DEFAULT_OPTIONS,
298         10 * TEST_SUPPORT.TICKS_PER_SECOND,
299         SEGMENT_ADDRESS_4,
300         STATUS
301      );
302      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "REGION_GET_SEGMENT" );
303      TEXT_IO.PUT( "TA1 - got segment from region 1 - " );
304      SPTEST.PUT_ADDRESS_FROM_AREA_1( SEGMENT_ADDRESS_4 );
305      TEXT_IO.NEW_LINE;
306
307      TEXT_IO.PUT(
308         "TA1 - region_return_segment - return segment to region 2 - "
309      );
310      SPTEST.PUT_ADDRESS_FROM_AREA_2( SEGMENT_ADDRESS_1 );
311      TEXT_IO.NEW_LINE;
312      RTEMS.REGION_RETURN_SEGMENT(
313         SPTEST.REGION_ID( 2 ),
314         SEGMENT_ADDRESS_1,
315         STATUS
316      );
317      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "REGION_RETURN_SEGMENT" );
318
319      TEXT_IO.PUT_LINE( "TA1 - task_wake_after - yield processor" );
320      RTEMS.TASK_WAKE_AFTER( RTEMS.YIELD_PROCESSOR, STATUS );
321      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_WAKE_AFTER" );
322   
323      TEXT_IO.PUT_LINE( "TA1 - task_delete - delete TA3" );
324      RTEMS.TASK_DELETE( SPTEST.TASK_ID( 3 ), STATUS );
325      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_DELETE OF TA3" );
326
327TEST_SUPPORT.PAUSE;
328
329      RTEMS.TASK_CREATE(
330         SPTEST.TASK_NAME( 4 ),
331         SPTEST.BASE_PRIORITY,
332         2048,
333         RTEMS.DEFAULT_MODES,
334         RTEMS.DEFAULT_ATTRIBUTES,
335         SPTEST.TASK_ID( 4 ),
336         STATUS
337      );
338      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_CREATE OF TA4" );
339
340      RTEMS.TASK_CREATE(
341         SPTEST.TASK_NAME( 5 ),
342         SPTEST.BASE_PRIORITY,
343         2048,
344         RTEMS.DEFAULT_MODES,
345         RTEMS.DEFAULT_ATTRIBUTES,
346         SPTEST.TASK_ID( 5 ),
347         STATUS
348      );
349      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_CREATE OF TA5" );
350
351      RTEMS.TASK_START(
352         SPTEST.TASK_ID( 4 ),
353         SPTEST.TASK_4'ACCESS,
354         0,
355         STATUS
356      );
357      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_START OF TA4" );
358
359      RTEMS.TASK_START(
360         SPTEST.TASK_ID( 5 ),
361         SPTEST.TASK_5'ACCESS,
362         0,
363         STATUS
364      );
365      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_START OF TA5" );
366
367      TEXT_IO.PUT_LINE( "TA1 - task_wake_after - yield processor" );
368      RTEMS.TASK_WAKE_AFTER( TEST_SUPPORT.TICKS_PER_SECOND, STATUS );
369      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_WAKE_AFTER" );
370         
371      TEXT_IO.PUT(
372         "TA1 - region_return_segment - return segment to region 1 - "
373      );
374      SPTEST.PUT_ADDRESS_FROM_AREA_1( SEGMENT_ADDRESS_4 );
375      RTEMS.REGION_RETURN_SEGMENT(
376         SPTEST.REGION_ID( 1 ),
377         SEGMENT_ADDRESS_4,
378         STATUS
379      );
380      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "REGION_RETURN_SEGMENT" );
381      TEXT_IO.NEW_LINE;
382
383      TEXT_IO.PUT_LINE( "TA1 - task_wake_after - yield processor" );
384      RTEMS.TASK_WAKE_AFTER( TEST_SUPPORT.TICKS_PER_SECOND, STATUS );
385      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_WAKE_AFTER" );
386   
387      TEXT_IO.PUT( "TA1 - region_get_segment - wait 10 seconds for 3K " );
388      TEXT_IO.PUT_LINE( "segment from region 1" );
389      RTEMS.REGION_GET_SEGMENT(
390         SPTEST.REGION_ID( 1 ),
391         3072,
392         RTEMS.DEFAULT_OPTIONS,
393         10 * TEST_SUPPORT.TICKS_PER_SECOND,
394         SEGMENT_ADDRESS_4,
395         STATUS
396      );
397      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "REGION_GET_SEGMENT" );
398      TEXT_IO.PUT( "TA1 - got segment from region 1 - " );
399      SPTEST.PUT_ADDRESS_FROM_AREA_1( SEGMENT_ADDRESS_4 );
400      TEXT_IO.NEW_LINE;
401
402      TEXT_IO.PUT_LINE( "TA1 - task_wake_after - sleep 1 second" );
403      RTEMS.TASK_WAKE_AFTER( TEST_SUPPORT.TICKS_PER_SECOND, STATUS );
404      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_WAKE_AFTER" );
405   
406      TEXT_IO.PUT_LINE( "TA1 - task_delete - delete TA4" );
407      RTEMS.TASK_DELETE( SPTEST.TASK_ID( 4 ), STATUS );
408      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_DELETE OF TA4" );
409
410      TEXT_IO.PUT(
411         "TA1 - region_return_segment - return segment to region 1 - "
412      );
413      SPTEST.PUT_ADDRESS_FROM_AREA_1( SEGMENT_ADDRESS_4 );
414      RTEMS.REGION_RETURN_SEGMENT(
415         SPTEST.REGION_ID( 1 ),
416         SEGMENT_ADDRESS_4,
417         STATUS
418      );
419      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "REGION_RETURN_SEGMENT" );
420      TEXT_IO.NEW_LINE;
421
422      TEXT_IO.PUT_LINE( "TA1 - task_wake_after - yield processor" );
423      RTEMS.TASK_WAKE_AFTER( RTEMS.YIELD_PROCESSOR, STATUS );
424      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_WAKE_AFTER" );
425   
426      TEXT_IO.PUT_LINE( "TA1 - region_delete - delete region 1" );
427      RTEMS.REGION_DELETE( SPTEST.REGION_ID( 1 ), STATUS );
428      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "REGION_DELETE OF RN1" );
429
430      TEXT_IO.PUT_LINE( "*** END OF TEST 16 ***" );
431      RTEMS.SHUTDOWN_EXECUTIVE( 0 );
432
433   end TASK_1;
434
435--PAGE
436--
437--  TASK_2
438--
439
440   procedure TASK_2 (
441      ARGUMENT : in     RTEMS.TASK_ARGUMENT
442   ) is
443      PREVIOUS_PRIORITY : RTEMS.TASK_PRIORITY;
444      SEGMENT_ADDRESS_1 : RTEMS.ADDRESS;
445      SEGMENT_ADDRESS_2 : RTEMS.ADDRESS;
446      STATUS            : RTEMS.STATUS_CODES;
447   begin
448
449      TEXT_IO.PUT( "TA2 - region_get_segment - wait on 2K segment " );
450      TEXT_IO.PUT_LINE( "from region 1" );
451      RTEMS.REGION_GET_SEGMENT(
452         SPTEST.REGION_ID( 1 ),
453         2048,
454         RTEMS.DEFAULT_OPTIONS,
455         RTEMS.NO_TIMEOUT,
456         SEGMENT_ADDRESS_1,
457         STATUS
458      );
459      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "REGION_GET_SEGMENT" );
460      TEXT_IO.PUT( "TA2 - got segment from region 1 - " );
461      SPTEST.PUT_ADDRESS_FROM_AREA_1( SEGMENT_ADDRESS_1 );
462      TEXT_IO.NEW_LINE;
463
464      TEXT_IO.PUT(
465         "TA2 - region_return_segment - return segment to region 1 - "
466      );
467      SPTEST.PUT_ADDRESS_FROM_AREA_1( SEGMENT_ADDRESS_1 );
468      RTEMS.REGION_RETURN_SEGMENT(
469         SPTEST.REGION_ID( 1 ),
470         SEGMENT_ADDRESS_1,
471         STATUS
472      );
473      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "REGION_RETURN_SEGMENT" );
474      TEXT_IO.NEW_LINE;
475
476      TEXT_IO.PUT( "TA2 - task_set_priority - make self " );
477      TEXT_IO.PUT_LINE( "highest priority task" );
478      RTEMS.TASK_SET_PRIORITY(
479         RTEMS.SELF,
480         SPTEST.BASE_PRIORITY - 1,
481         PREVIOUS_PRIORITY,
482         STATUS
483      );
484      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_SET_PRIORITY" );
485
486      TEXT_IO.PUT(
487         "TA2 - region_get_segment - wait on 3968 byte segment "
488      );
489      TEXT_IO.PUT_LINE( "from region 2" );
490      RTEMS.REGION_GET_SEGMENT(
491         SPTEST.REGION_ID( 2 ),
492         3968,
493         RTEMS.DEFAULT_OPTIONS,
494         RTEMS.NO_TIMEOUT,
495         SEGMENT_ADDRESS_2,
496         STATUS
497      );
498      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "REGION_GET_SEGMENT" );
499      TEXT_IO.PUT( "TA2 - got segment from region 2 - " );
500      SPTEST.PUT_ADDRESS_FROM_AREA_2( SEGMENT_ADDRESS_2 );
501      TEXT_IO.NEW_LINE;
502
503      TEXT_IO.PUT(
504         "TA2 - region_return_segment - return segment to region 2 - "
505      );
506      SPTEST.PUT_ADDRESS_FROM_AREA_2( SEGMENT_ADDRESS_2 );
507      RTEMS.REGION_RETURN_SEGMENT(
508         SPTEST.REGION_ID( 2 ),
509         SEGMENT_ADDRESS_2,
510         STATUS
511      );
512      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "REGION_RETURN_SEGMENT" );
513      TEXT_IO.NEW_LINE;
514
515      TEXT_IO.PUT_LINE( "TA2 - task_delete - delete self" );
516      RTEMS.TASK_DELETE( RTEMS.SELF, STATUS );
517      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_DELETE OF TA2" );
518
519   end TASK_2;
520
521--PAGE
522--
523--  TASK_3
524--
525
526   procedure TASK_3 (
527      ARGUMENT : in     RTEMS.TASK_ARGUMENT
528   ) is
529      SEGMENT_ADDRESS_1 : RTEMS.ADDRESS;
530      SEGMENT_ADDRESS_2 : RTEMS.ADDRESS;
531      STATUS            : RTEMS.STATUS_CODES;
532   begin
533
534      TEXT_IO.PUT( "TA3 - region_get_segment - wait on 3968 byte segment " );
535      TEXT_IO.PUT_LINE( "from region 2" );
536      RTEMS.REGION_GET_SEGMENT(
537         SPTEST.REGION_ID( 2 ),
538         3968,
539         RTEMS.DEFAULT_OPTIONS,
540         RTEMS.NO_TIMEOUT,
541         SEGMENT_ADDRESS_1,
542         STATUS
543      );
544      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "REGION_GET_SEGMENT" );
545      TEXT_IO.PUT( "TA3 - got segment from region 2 - " );
546      SPTEST.PUT_ADDRESS_FROM_AREA_2( SEGMENT_ADDRESS_1 );
547      TEXT_IO.NEW_LINE;
548
549      TEXT_IO.PUT( "TA3 - region_get_segment - wait on 2K segment " );
550      TEXT_IO.PUT_LINE( "from region 3" );
551      RTEMS.REGION_GET_SEGMENT(
552         SPTEST.REGION_ID( 3 ),
553         2048,
554         RTEMS.DEFAULT_OPTIONS,
555         RTEMS.NO_TIMEOUT,
556         SEGMENT_ADDRESS_2,
557         STATUS
558      );
559      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "REGION_GET_SEGMENT" );
560
561   end TASK_3;
562
563--PAGE
564--
565--  TASK_4
566--
567
568   procedure TASK_4 (
569      ARGUMENT : in     RTEMS.TASK_ARGUMENT
570   ) is
571      SEGMENT_ADDRESS_1 : RTEMS.ADDRESS;
572      SEGMENT_ADDRESS_2 : RTEMS.ADDRESS;
573      STATUS            : RTEMS.STATUS_CODES;
574   begin
575
576      TEXT_IO.PUT( "TA4 - region_get_segment - wait on 1.5K segment " );
577      TEXT_IO.PUT_LINE( "from region 1" );
578      RTEMS.REGION_GET_SEGMENT(
579         SPTEST.REGION_ID( 1 ),
580         1536,
581         RTEMS.DEFAULT_OPTIONS,
582         RTEMS.NO_TIMEOUT,
583         SEGMENT_ADDRESS_1,
584         STATUS
585      );
586      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "REGION_GET_SEGMENT" );
587
588      RTEMS.REGION_RETURN_SEGMENT(
589         SPTEST.REGION_ID( 1 ),
590         SEGMENT_ADDRESS_1,
591         STATUS
592      );
593      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "REGION_RETURN_SEGMENT" );
594      TEXT_IO.PUT( "TA4 - got and returned " );
595      SPTEST.PUT_ADDRESS_FROM_AREA_1( SEGMENT_ADDRESS_1 );
596      TEXT_IO.NEW_LINE;
597
598      RTEMS.TASK_WAKE_AFTER( TEST_SUPPORT.TICKS_PER_SECOND, STATUS );
599      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_WAKE_AFTER" );
600
601      TEXT_IO.PUT( "TA4 - region_get_segment - wait on 3K segment " );
602      TEXT_IO.PUT_LINE( "from region 1" );
603      RTEMS.REGION_GET_SEGMENT(
604         SPTEST.REGION_ID( 1 ),
605         3072,
606         RTEMS.DEFAULT_OPTIONS,
607         RTEMS.NO_TIMEOUT,
608         SEGMENT_ADDRESS_2,
609         STATUS
610      );
611      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "REGION_GET_SEGMENT" );
612
613   end TASK_4;
614
615--PAGE
616--
617--  TASK_5
618--
619
620   procedure TASK_5 (
621      ARGUMENT : in     RTEMS.TASK_ARGUMENT
622   ) is
623      SEGMENT_ADDRESS_1 : RTEMS.ADDRESS;
624      SEGMENT_ADDRESS_2 : RTEMS.ADDRESS;
625      STATUS            : RTEMS.STATUS_CODES;
626   begin
627
628      TEXT_IO.PUT( "TA5 - region_get_segment - wait on 1.5K segment " );
629      TEXT_IO.PUT_LINE( "from region 1" );
630      RTEMS.REGION_GET_SEGMENT(
631         SPTEST.REGION_ID( 1 ),
632         1536,
633         RTEMS.DEFAULT_OPTIONS,
634         RTEMS.NO_TIMEOUT,
635         SEGMENT_ADDRESS_1,
636         STATUS
637      );
638      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "REGION_GET_SEGMENT" );
639
640      RTEMS.REGION_RETURN_SEGMENT(
641         SPTEST.REGION_ID( 1 ),
642         SEGMENT_ADDRESS_1,
643         STATUS
644      );
645      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "REGION_RETURN_SEGMENT" );
646      TEXT_IO.PUT( "TA5 - got and returned " );
647      SPTEST.PUT_ADDRESS_FROM_AREA_1( SEGMENT_ADDRESS_1 );
648      TEXT_IO.NEW_LINE;
649
650      RTEMS.TASK_WAKE_AFTER( TEST_SUPPORT.TICKS_PER_SECOND, STATUS );
651      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_WAKE_AFTER" );
652
653      TEXT_IO.PUT( "TA5 - region_get_segment - wait on 3K segment " );
654      TEXT_IO.PUT_LINE( "from region 1" );
655      RTEMS.REGION_GET_SEGMENT(
656         SPTEST.REGION_ID( 1 ),
657         3072,
658         RTEMS.DEFAULT_OPTIONS,
659         RTEMS.NO_TIMEOUT,
660         SEGMENT_ADDRESS_2,
661         STATUS
662      );
663      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "REGION_GET_SEGMENT" );
664      TEXT_IO.PUT( "TA5 - got segment from region 1 - " );
665      SPTEST.PUT_ADDRESS_FROM_AREA_1( SEGMENT_ADDRESS_2 );
666      TEXT_IO.NEW_LINE;
667
668      RTEMS.REGION_RETURN_SEGMENT(
669         SPTEST.REGION_ID( 1 ),
670         SEGMENT_ADDRESS_2,
671         STATUS
672      );
673      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "REGION_RETURN_SEGMENT" );
674      TEXT_IO.PUT(
675         "TA5 - region_return_segment - return segment to region 1 - "
676      );
677      SPTEST.PUT_ADDRESS_FROM_AREA_1( SEGMENT_ADDRESS_2 );
678      TEXT_IO.NEW_LINE;
679
680      TEXT_IO.PUT_LINE( "TA5 - task_delete - delete self" );
681      RTEMS.TASK_DELETE( RTEMS.SELF, STATUS );
682      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_DELETE OF TA5" );
683
684   end TASK_5;
685
686end SPTEST;
Note: See TracBrowser for help on using the repository browser.