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

4.104.114.84.95
Last change on this file since 48bfd992 was bf9ae83, checked in by Joel Sherrill <joel.sherrill@…>, on Jun 2, 1997 at 8:32:11 PM

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: 25.6 KB
Line 
1--
2--  SPTEST / BODY
3--
4--  DESCRIPTION:
5--
6--  This package is the implementation of Test 11 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 11 ***" );
45
46      SPTEST.TASK_NAME( 1 ) := RTEMS.BUILD_NAME(  'T', 'A', '1', ' ' );
47      SPTEST.TASK_NAME( 2 ) := RTEMS.BUILD_NAME(  'T', 'A', '2', ' ' );
48
49      RTEMS.TASK_CREATE( 
50         SPTEST.TASK_NAME( 1 ), 
51         4, 
52         2048, 
53         RTEMS.DEFAULT_MODES,
54         RTEMS.DEFAULT_ATTRIBUTES,
55         SPTEST.TASK_ID( 1 ),
56         STATUS
57      );
58      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_CREATE OF TA1" );
59
60      RTEMS.TASK_CREATE( 
61         SPTEST.TASK_NAME( 2 ), 
62         4, 
63         2048, 
64         RTEMS.DEFAULT_MODES,
65         RTEMS.DEFAULT_ATTRIBUTES,
66         SPTEST.TASK_ID( 2 ),
67         STATUS
68      );
69      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_CREATE OF TA2" );
70
71      RTEMS.TASK_START(
72         SPTEST.TASK_ID( 1 ),
73         SPTEST.TASK_1'ACCESS,
74         0,
75         STATUS
76      );
77      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_START OF TA1" );
78
79      RTEMS.TASK_START(
80         SPTEST.TASK_ID( 2 ),
81         SPTEST.TASK_2'ACCESS,
82         0,
83         STATUS
84      );
85      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_START OF TA2" );
86
87      SPTEST.TIMER_NAME( 1 ) := RTEMS.BUILD_NAME(  'T', 'M', '1', ' ' );
88      SPTEST.TIMER_NAME( 2 ) := RTEMS.BUILD_NAME(  'T', 'M', '2', ' ' );
89      SPTEST.TIMER_NAME( 3 ) := RTEMS.BUILD_NAME(  'T', 'M', '3', ' ' );
90      SPTEST.TIMER_NAME( 4 ) := RTEMS.BUILD_NAME(  'T', 'M', '4', ' ' );
91      SPTEST.TIMER_NAME( 5 ) := RTEMS.BUILD_NAME(  'T', 'M', '5', ' ' );
92      SPTEST.TIMER_NAME( 6 ) := RTEMS.BUILD_NAME(  'T', 'M', '6', ' ' );
93
94      RTEMS.TIMER_CREATE( 
95         SPTEST.TIMER_NAME( 1 ),
96         SPTEST.TIMER_ID( 1 ),
97         STATUS
98      );
99      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TIMER_CREATE OF TM1" );
100
101      RTEMS.TIMER_CREATE( 
102         SPTEST.TIMER_NAME( 2 ),
103         SPTEST.TIMER_ID( 2 ),
104         STATUS
105      );
106      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TIMER_CREATE OF TM2" );
107
108      RTEMS.TIMER_CREATE( 
109         SPTEST.TIMER_NAME( 3 ),
110         SPTEST.TIMER_ID( 3 ),
111         STATUS
112      );
113      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TIMER_CREATE OF TM3" );
114
115      RTEMS.TIMER_CREATE( 
116         SPTEST.TIMER_NAME( 4 ),
117         SPTEST.TIMER_ID( 4 ),
118         STATUS
119      );
120      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TIMER_CREATE OF TM4" );
121
122      RTEMS.TIMER_CREATE( 
123         SPTEST.TIMER_NAME( 5 ),
124         SPTEST.TIMER_ID( 5 ),
125         STATUS
126      );
127      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TIMER_CREATE OF TM5" );
128
129      RTEMS.TIMER_CREATE( 
130         SPTEST.TIMER_NAME( 6 ),
131         SPTEST.TIMER_ID( 6 ),
132         STATUS
133      );
134      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TIMER_CREATE OF TM6" );
135
136      RTEMS.TASK_DELETE( RTEMS.SELF, STATUS );
137      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_DELETE OF SELF" );
138
139   end INIT;
140
141--PAGE
142--
143--  TASK_1
144--
145
146   procedure TASK_1 (
147      ARGUMENT : in     RTEMS.TASK_ARGUMENT
148   ) is
149      EVENTOUT : RTEMS.EVENT_SET;
150      TIME     : RTEMS.TIME_OF_DAY;
151      STATUS   : RTEMS.STATUS_CODES;
152      INDEX    : RTEMS.UNSIGNED32;
153   begin
154
155      TEXT_IO.PUT_LINE( "TA1 - event_send - send EVENT_16 to TA2" );
156      RTEMS.EVENT_SEND( SPTEST.TASK_ID( 2 ), RTEMS.EVENT_16, STATUS );
157      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "EVENT_SEND of 16" );
158
159      TEXT_IO.PUT_LINE( 
160         "TA1 - event_receive - waiting forever on EVENT_14 and EVENT_15"
161      );
162      RTEMS.EVENT_RECEIVE( 
163         RTEMS.EVENT_14 + RTEMS.EVENT_15,
164         RTEMS.DEFAULT_OPTIONS,
165         RTEMS.NO_TIMEOUT,
166         EVENTOUT,
167         STATUS
168      );
169      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "EVENT_RECEIVE of 14 and 15" );
170      TEXT_IO.PUT( "TA1 - EVENT_14 and EVENT_15 received - eventout => ");
171      UNSIGNED32_IO.PUT( EVENTOUT, BASE => 16, WIDTH => 8 );
172      TEXT_IO.NEW_LINE;
173
174      TEXT_IO.PUT_LINE( "TA1 - event_send - send EVENT_18 to TA2" );
175      RTEMS.EVENT_SEND( SPTEST.TASK_ID( 2 ), RTEMS.EVENT_18, STATUS );
176      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "EVENT_SEND of 18" );
177
178      TEXT_IO.PUT_LINE( 
179         "TA1 - event_receive - waiting with 10 second timeout on EVENT_14"
180      );
181      RTEMS.EVENT_RECEIVE( 
182         RTEMS.EVENT_14,
183         RTEMS.DEFAULT_OPTIONS,
184         10 * TEST_SUPPORT.TICKS_PER_SECOND,
185         EVENTOUT,
186         STATUS
187      );
188      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "EVENT_RECEIVE of 14" );
189      TEXT_IO.PUT( "TA1 - EVENT_14 received - eventout => ");
190      UNSIGNED32_IO.PUT( EVENTOUT, BASE => 16, WIDTH => 8 );
191      TEXT_IO.NEW_LINE;
192
193      TEXT_IO.PUT_LINE( "TA1 - event_send - send EVENT_19 to TA2" );
194      RTEMS.EVENT_SEND( SPTEST.TASK_ID( 2 ), RTEMS.EVENT_19, STATUS );
195      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "EVENT_SEND of 19" );
196
197      RTEMS.CLOCK_GET( RTEMS.CLOCK_GET_TOD, TIME'ADDRESS, STATUS );
198      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TA1 CLOCK_GET" );
199      TEST_SUPPORT.PRINT_TIME( "TA1 - clock_get - ", TIME, "" );
200      TEXT_IO.NEW_LINE;
201
202      TEST_SUPPORT.PAUSE;
203
204      TEXT_IO.PUT_LINE( 
205         "TA1 - event_send - send EVENT_18 to self after 5 seconds"
206      );
207      RTEMS.TIMER_FIRE_AFTER( 
208         SPTEST.TIMER_ID( 1 ),
209         5 * TEST_SUPPORT.TICKS_PER_SECOND,
210         SPTEST.TA1_SEND_18_TO_SELF_5_SECONDS'ACCESS,
211         RTEMS.NULL_ADDRESS,
212         STATUS
213      );
214      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TIMER_FIRE_AFTER 5 seconds" );
215
216      TEXT_IO.PUT_LINE( 
217         "TA1 - event_receive - waiting forever on EVENT_18"
218      );
219      RTEMS.EVENT_RECEIVE( 
220         RTEMS.EVENT_18,
221         RTEMS.DEFAULT_OPTIONS,
222         RTEMS.NO_TIMEOUT,
223         EVENTOUT,
224         STATUS
225      );
226      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "EVENT_RECEIVE of 18" );
227
228      RTEMS.CLOCK_GET( RTEMS.CLOCK_GET_TOD, TIME'ADDRESS, STATUS );
229      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TA1 CLOCK_GET" );
230
231      TEXT_IO.PUT( "TA1 - EVENT_18 received - eventout => ");
232      UNSIGNED32_IO.PUT( EVENTOUT, BASE => 16, WIDTH => 8 );
233      TEXT_IO.NEW_LINE;
234
235      TEST_SUPPORT.PRINT_TIME( "TA1 - clock_get - ", TIME, "" );
236      TEXT_IO.NEW_LINE;
237
238      TEXT_IO.PUT_LINE( "TA1 - event_send - send EVENT_3 to self" );
239      RTEMS.EVENT_SEND( RTEMS.SELF, RTEMS.EVENT_3, STATUS );
240      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "EVENT_SEND of 3" );
241
242      TEXT_IO.PUT_LINE( 
243         "TA1 - event_receive - EVENT_3 or EVENT_22 - NO_WAIT and EVENT_ANY"
244      );
245      RTEMS.EVENT_RECEIVE( 
246         RTEMS.EVENT_3 + RTEMS.EVENT_22,
247         RTEMS.NO_WAIT + RTEMS.EVENT_ANY,
248         RTEMS.NO_TIMEOUT,
249         EVENTOUT,
250         STATUS
251      );
252      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "EVENT_RECEIVE of 3 and 22" );
253      TEXT_IO.PUT( "TA1 - EVENT_3 received - eventout => ");
254      UNSIGNED32_IO.PUT( EVENTOUT, BASE => 16, WIDTH => 8 );
255      TEXT_IO.NEW_LINE;
256
257      TEXT_IO.PUT_LINE( "TA1 - event_send - send EVENT_4 to self" );
258      RTEMS.EVENT_SEND( RTEMS.SELF, RTEMS.EVENT_4, STATUS );
259      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "EVENT_SEND of 4" );
260
261      TEXT_IO.PUT_LINE( 
262"TA1 - event_receive - waiting forever on EVENT_4 or EVENT_5 - EVENT_ANY"
263      );
264      RTEMS.EVENT_RECEIVE( 
265         RTEMS.EVENT_4 + RTEMS.EVENT_5,
266         RTEMS.EVENT_ANY,
267         RTEMS.NO_TIMEOUT,
268         EVENTOUT,
269         STATUS
270      );
271      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "EVENT_RECEIVE of 4 and 5" );
272      TEXT_IO.PUT( "TA1 - EVENT_4 received - eventout => ");
273      UNSIGNED32_IO.PUT( EVENTOUT, BASE => 16, WIDTH => 8 );
274      TEXT_IO.NEW_LINE;
275
276      TEST_SUPPORT.PAUSE;
277
278      TEXT_IO.PUT_LINE( 
279         "TA1 - event_send - send EVENT_18 to self after 5 seconds"
280      );
281      RTEMS.TIMER_FIRE_AFTER( 
282         SPTEST.TIMER_ID( 1 ),
283         5 * TEST_SUPPORT.TICKS_PER_SECOND,
284         SPTEST.TA1_SEND_18_TO_SELF_5_SECONDS'ACCESS,
285         RTEMS.NULL_ADDRESS,
286         STATUS
287      );
288      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TIMER_FIRE_AFTER 5 seconds" );
289
290      TEXT_IO.PUT_LINE( 
291         "TA1 - timer_cancel - cancelling timer for event EVENT_18"
292      );
293      RTEMS.TIMER_CANCEL( SPTEST.TIMER_ID( 1 ), STATUS );
294      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TIMER_CANCEL" );
295
296      TEXT_IO.PUT_LINE( 
297         "TA1 - event_send - send EVENT_8 to self after 60 seconds"
298      );
299      RTEMS.TIMER_FIRE_AFTER( 
300         SPTEST.TIMER_ID( 1 ),
301         60 * TEST_SUPPORT.TICKS_PER_SECOND,
302         SPTEST.TA1_SEND_8_TO_SELF_60_SECONDS'ACCESS,
303         RTEMS.NULL_ADDRESS,
304         STATUS
305      );
306      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TIMER_FIRE_AFTER 60 secs" );
307
308      TEXT_IO.PUT_LINE( 
309         "TA1 - event_send - send EVENT_9 to self after 60 seconds"
310      );
311      RTEMS.TIMER_FIRE_AFTER( 
312         SPTEST.TIMER_ID( 2 ),
313         60 * TEST_SUPPORT.TICKS_PER_SECOND,
314         SPTEST.TA1_SEND_9_TO_SELF_60_SECONDS'ACCESS,
315         RTEMS.NULL_ADDRESS,
316         STATUS
317      );
318      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TIMER_FIRE_AFTER 60 secs" );
319
320      TEXT_IO.PUT_LINE( 
321         "TA1 - event_send - send EVENT_10 to self after 60 seconds"
322      );
323      RTEMS.TIMER_FIRE_AFTER( 
324         SPTEST.TIMER_ID( 3 ),
325         60 * TEST_SUPPORT.TICKS_PER_SECOND,
326         SPTEST.TA1_SEND_10_TO_SELF'ACCESS,
327         RTEMS.NULL_ADDRESS,
328         STATUS
329      );
330      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TIMER_FIRE_AFTER 60 secs" );
331
332      TEXT_IO.PUT_LINE( 
333         "TA1 - timer_cancel - cancelling timer for event EVENT_8"
334      );
335      RTEMS.TIMER_CANCEL( SPTEST.TIMER_ID( 1 ), STATUS );
336      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TIMER_CANCEL" );
337
338      TIME := ( 1988, 2, 12, 8, 15, 0, 0 );
339
340      TEST_SUPPORT.PRINT_TIME( "TA1 - clock_set - ", TIME, "" );
341      TEXT_IO.NEW_LINE;
342      RTEMS.CLOCK_SET( TIME, STATUS );
343      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TA1 CLOCK_SET" );
344
345      TEXT_IO.PUT_LINE( 
346         "TA1 - event_send - send EVENT_1 every second"
347      );
348      RTEMS.TIMER_FIRE_AFTER( 
349         SPTEST.TIMER_ID( 1 ),
350         TEST_SUPPORT.TICKS_PER_SECOND,
351         SPTEST.TA1_SEND_1_TO_SELF_EVERY_SECOND'ACCESS,
352         RTEMS.NULL_ADDRESS,
353         STATUS
354      );
355      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TIMER_FIRE_AFTER 1 SECOND" );
356
357      INDEX := 0;
358
359      loop
360
361         exit when INDEX = 3;
362
363         RTEMS.EVENT_RECEIVE( 
364            RTEMS.EVENT_1,
365            RTEMS.EVENT_ANY,
366            RTEMS.NO_TIMEOUT,
367            EVENTOUT,
368            STATUS
369         );
370         TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "EVENT_RECEIVE of 1" );
371
372         RTEMS.CLOCK_GET( RTEMS.CLOCK_GET_TOD, TIME'ADDRESS, STATUS );
373         TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TA1 CLOCK_GET" );
374
375         TEXT_IO.PUT( "TA1 - EVENT_1 received - eventout => ");
376         UNSIGNED32_IO.PUT( EVENTOUT, BASE => 16, WIDTH => 8 );
377         TEST_SUPPORT.PRINT_TIME( " - at ", TIME, "" );
378         TEXT_IO.NEW_LINE;
379
380         if INDEX < 2 then
381            RTEMS.TIMER_RESET( SPTEST.TIMER_ID( 1 ), STATUS );
382            TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TA1 TIMER RESET" );
383         end if;
384
385         INDEX := INDEX + 1;
386      end loop;
387
388      TEXT_IO.PUT_LINE( 
389         "TA1 - timer_cancel - cancelling timer for event EVENT_1"
390      );
391      RTEMS.TIMER_CANCEL( SPTEST.TIMER_ID( 1 ), STATUS );
392      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TIMER_CANCEL" );
393
394      TEST_SUPPORT.PAUSE;
395
396      TIME.DAY := 13;
397      TEXT_IO.PUT_LINE( 
398         "TA1 - event_send - send EVENT_11 to self in 1 day"
399      );
400      RTEMS.TIMER_FIRE_WHEN( 
401         SPTEST.TIMER_ID( 1 ),
402         TIME,
403         SPTEST.TA1_SEND_11_TO_SELF'ACCESS,
404         RTEMS.NULL_ADDRESS,
405         STATUS
406      );
407      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TIMER_FIRE_WHEN 1 day" );
408
409      TIME.HOUR := 7;
410      TEXT_IO.PUT_LINE( 
411         "TA1 - event_send - send EVENT_11 to self in 1 day"
412      );
413      RTEMS.TIMER_FIRE_WHEN( 
414         SPTEST.TIMER_ID( 2 ),
415         TIME,
416         SPTEST.TA1_SEND_11_TO_SELF'ACCESS,
417         RTEMS.NULL_ADDRESS,
418         STATUS
419      );
420      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TIMER_FIRE_WHEN 1 day" );
421      TIME.HOUR := 8;
422
423      TIME.DAY := 14;
424      TEXT_IO.PUT_LINE( 
425         "TA1 - event_send - send EVENT_11 to self in 2 days"
426      );
427      RTEMS.TIMER_FIRE_WHEN( 
428         SPTEST.TIMER_ID( 3 ),
429         TIME,
430         SPTEST.TA1_SEND_11_TO_SELF'ACCESS,
431         RTEMS.NULL_ADDRESS,
432         STATUS
433      );
434      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TIMER_FIRE_WHEN 2 days" );
435
436      TEXT_IO.PUT_LINE( 
437         "TA1 - timer_cancel - cancelling EVENT_11 to self in 1 day"
438      );
439      RTEMS.TIMER_CANCEL( SPTEST.TIMER_ID( 1 ), STATUS );
440      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TIMER_CANCEL" );
441
442      TEXT_IO.PUT_LINE( 
443         "TA1 - timer_cancel - cancelling EVENT_11 to self in 2 days"
444      );
445      RTEMS.TIMER_CANCEL( SPTEST.TIMER_ID( 3 ), STATUS );
446      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TIMER_CANCEL" );
447
448      TEXT_IO.PUT_LINE( 
449         "TA1 - event_send - resending EVENT_11 to self in 2 days"
450      );
451      RTEMS.TIMER_FIRE_WHEN( 
452         SPTEST.TIMER_ID( 3 ),
453         TIME,
454         SPTEST.TA1_SEND_11_TO_SELF'ACCESS,
455         RTEMS.NULL_ADDRESS,
456         STATUS
457      );
458      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TIMER_FIRE_WHEN 2 days" );
459
460      TIME.DAY := 15;
461      TEST_SUPPORT.PRINT_TIME( "TA1 - clock_set - ", TIME, "" );
462      TEXT_IO.NEW_LINE;
463      RTEMS.CLOCK_SET( TIME, STATUS );
464      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TA1 CLOCK_SET" );
465      TEXT_IO.PUT_LINE( 
466         "TA1 - event_receive - waiting forever on EVENT_11"
467      );
468      RTEMS.EVENT_RECEIVE( 
469         RTEMS.EVENT_11,
470         RTEMS.DEFAULT_OPTIONS,
471         RTEMS.NO_TIMEOUT,
472         EVENTOUT,
473         STATUS
474      );
475      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "EVENT_RECEIVE of 11" );
476      TEXT_IO.PUT( "TA1 - EVENT_11 received - eventout => ");
477      UNSIGNED32_IO.PUT( EVENTOUT, BASE => 16, WIDTH => 8 );
478      TEXT_IO.NEW_LINE;
479
480      TEST_SUPPORT.PAUSE;
481
482-- The following code tests the case of deleting a timer ???
483
484      TEXT_IO.PUT_LINE( "TA1 - event_send/event_receive combination" );
485      RTEMS.TIMER_FIRE_AFTER( 
486         SPTEST.TIMER_ID( 1 ),
487         10,
488         SPTEST.TA1_SEND_11_TO_SELF'ACCESS,
489         RTEMS.NULL_ADDRESS,
490         STATUS
491      );
492      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TIMER_FIRE_AFTER 10 ticks" );
493      RTEMS.EVENT_RECEIVE( 
494         RTEMS.EVENT_11,
495         RTEMS.DEFAULT_OPTIONS,
496         11,
497         EVENTOUT,
498         STATUS
499      );
500      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "EVENT_RECEIVE" );
501
502      TIME := ( 1988, 2, 12, 8, 15, 0, 0 );
503
504      TEST_SUPPORT.PRINT_TIME( "TA1 - clock_set - ", TIME, "" );
505      TEXT_IO.NEW_LINE;
506      RTEMS.CLOCK_SET( TIME, STATUS );
507      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TA1 CLOCK_SET" );
508
509      TIME.DAY := 13;
510      TEXT_IO.PUT_LINE( 
511         "TA1 - event_receive all outstanding events"
512      );
513      RTEMS.EVENT_RECEIVE(
514         RTEMS.ALL_EVENTS,
515         RTEMS.NO_WAIT + RTEMS.EVENT_ANY,
516         RTEMS.NO_TIMEOUT,
517         EVENTOUT,
518         STATUS
519      );
520      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS( 
521         STATUS, 
522         RTEMS.UNSATISFIED, 
523         "EVENT_RECEIVE all events" 
524      );
525
526      TEXT_IO.PUT_LINE( 
527         "TA1 - event_send - send EVENT_10 to self in 1 day"
528      );
529      RTEMS.TIMER_FIRE_WHEN( 
530         SPTEST.TIMER_ID( 1 ),
531         TIME,
532         SPTEST.TA1_SEND_10_TO_SELF'ACCESS,
533         RTEMS.NULL_ADDRESS,
534         STATUS
535      );
536      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TIMER_FIRE_WHEN 1 day" );
537
538      TIME.DAY := 14;
539      TEXT_IO.PUT_LINE( 
540         "TA1 - event_send - send EVENT_11 to self in 2 days"
541      );
542      RTEMS.TIMER_FIRE_WHEN( 
543         SPTEST.TIMER_ID( 2 ),
544         TIME,
545         SPTEST.TA1_SEND_11_TO_SELF'ACCESS,
546         RTEMS.NULL_ADDRESS,
547         STATUS
548      );
549      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TIMER_FIRE_WHEN 2 days" );
550
551      TIME := ( 1988, 2, 12, 7, 15, 0, 0 );
552
553      TEST_SUPPORT.PRINT_TIME( "TA1 - clock_set - ", TIME, "" );
554      TEXT_IO.NEW_LINE;
555      TEXT_IO.PUT_LINE( "TA1 - set time backwards" );
556      RTEMS.CLOCK_SET( TIME, STATUS );
557      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TA1 CLOCK_SET" );
558
559      RTEMS.EVENT_RECEIVE( 
560         RTEMS.ALL_EVENTS,
561         RTEMS.NO_WAIT + RTEMS.EVENT_ANY,
562         RTEMS.NO_TIMEOUT,
563         EVENTOUT,
564         STATUS
565      );
566      if EVENTOUT >= RTEMS.EVENT_0 then 
567         TEXT_IO.PUT( "ERROR - " );
568         UNSIGNED32_IO.PUT( EVENTOUT, BASE => 16, WIDTH => 8 );
569         TEXT_IO.PUT_LINE( " events received" );
570      else
571         TEXT_IO.PUT_LINE( "TA1 - no events received" );
572      end if;
573      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS( 
574         STATUS, 
575         RTEMS.UNSATISFIED, 
576         "EVENT_RECEIVE all events" 
577      );
578
579      TIME := ( 1988, 2, 14, 7, 15, 0, 0 );
580
581      TEST_SUPPORT.PRINT_TIME( "TA1 - clock_set - ", TIME, "" );
582      TEXT_IO.NEW_LINE;
583      TEXT_IO.PUT_LINE( "TA1 - set time forwards (leave a timer)" );
584      RTEMS.CLOCK_SET( TIME, STATUS );
585      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TA1 CLOCK_SET" );
586
587      RTEMS.EVENT_RECEIVE( 
588         RTEMS.ALL_EVENTS,
589         RTEMS.NO_WAIT + RTEMS.EVENT_ANY,
590         RTEMS.NO_TIMEOUT,
591         EVENTOUT,
592         STATUS
593      );
594      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "EVENT_RECEIVE all events" );
595      if EVENTOUT = RTEMS.EVENT_10 then 
596         TEXT_IO.PUT_LINE( "TA1 - EVENT_10 received" );
597      else
598         TEXT_IO.PUT( "ERROR - " );
599         UNSIGNED32_IO.PUT( EVENTOUT, BASE => 16, WIDTH => 8 );
600         TEXT_IO.PUT_LINE( " events received" );
601      end if;
602         
603      TEXT_IO.PUT_LINE( 
604         "TA1 - event_send - send EVENT_11 to self in 100 ticks"
605      );
606      RTEMS.TIMER_FIRE_AFTER( 
607         SPTEST.TIMER_ID( 1 ),
608         100,
609         SPTEST.TA1_SEND_11_TO_SELF'ACCESS,
610         RTEMS.NULL_ADDRESS,
611         STATUS
612      );
613      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TIMER_FIRE_AFTER 100 ticks" );
614
615      TEXT_IO.PUT_LINE( 
616         "TA1 - event_send - send EVENT_11 to self in 200 ticks"
617      );
618      RTEMS.TIMER_FIRE_AFTER( 
619         SPTEST.TIMER_ID( 2 ),
620         100,
621         SPTEST.TA1_SEND_11_TO_SELF'ACCESS,
622         RTEMS.NULL_ADDRESS,
623         STATUS
624      );
625      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TIMER_FIRE_AFTER 200 ticks" );
626
627      TEXT_IO.PUT_LINE( "*** END OF TEST 11 ***" );
628      RTEMS.SHUTDOWN_EXECUTIVE( 0 );
629
630   end TASK_1;
631
632--PAGE
633--
634--  TASK_2
635--
636
637   procedure TASK_2 (
638      ARGUMENT : in     RTEMS.TASK_ARGUMENT
639   ) is
640      EVENTOUT : RTEMS.EVENT_SET;
641      TIME     : RTEMS.TIME_OF_DAY;
642      STATUS   : RTEMS.STATUS_CODES;
643   begin
644
645      RTEMS.TASK_WAKE_AFTER( 1 * TEST_SUPPORT.TICKS_PER_SECOND, STATUS );
646      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_WAKE_AFTER" );
647
648      TEXT_IO.PUT_LINE( 
649         "TA2 - event_receive - waiting forever on EVENT_16"
650      );
651      RTEMS.EVENT_RECEIVE( 
652         RTEMS.EVENT_16,
653         RTEMS.DEFAULT_OPTIONS,
654         RTEMS.NO_TIMEOUT,
655         EVENTOUT,
656         STATUS
657      );
658      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "EVENT_RECEIVE of 16" );
659      TEXT_IO.PUT( "TA2 - EVENT_16 received - eventout => ");
660      UNSIGNED32_IO.PUT( EVENTOUT, BASE => 16, WIDTH => 8 );
661      TEXT_IO.NEW_LINE;
662
663      TEXT_IO.PUT_LINE( 
664         "TA2 - event_send - send EVENT_14 and EVENT_15 to TA1"
665      );
666      RTEMS.EVENT_SEND( 
667         SPTEST.TASK_ID( 1 ), 
668         RTEMS.EVENT_14 + RTEMS.EVENT_15,
669         STATUS
670      );
671      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "EVENT_SEND of 14 and 15" );
672
673      TEXT_IO.PUT_LINE( 
674     "TA2 - event_receive - waiting forever on EVENT_17 or EVENT_18 - EVENT_ANY"
675      );
676      RTEMS.EVENT_RECEIVE( 
677         RTEMS.EVENT_17 + RTEMS.EVENT_18,
678         RTEMS.EVENT_ANY,
679         RTEMS.NO_TIMEOUT,
680         EVENTOUT,
681         STATUS
682      );
683      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "EVENT_RECEIVE of 17 and 18" );
684      TEXT_IO.PUT( "TA2 - EVENT_17 or EVENT_18 received - eventout => ");
685      UNSIGNED32_IO.PUT( EVENTOUT, BASE => 16, WIDTH => 8 );
686      TEXT_IO.NEW_LINE;
687
688      TEXT_IO.PUT_LINE( 
689         "TA2 - event_send - send EVENT_14 to TA1"
690      );
691      RTEMS.EVENT_SEND( 
692         SPTEST.TASK_ID( 1 ), 
693         RTEMS.EVENT_14,
694         STATUS
695      );
696      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "EVENT_SEND of 14" );
697
698      TIME := ( 1988,  2, 12, 8, 15, 0, 0 );
699
700      TEST_SUPPORT.PRINT_TIME( "TA2 - clock_set - ", TIME, "" );
701      TEXT_IO.NEW_LINE;
702      RTEMS.CLOCK_SET( TIME, STATUS );
703      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TA2 CLOCK_SET" );
704
705      TIME.SECOND := TIME.SECOND + 5;
706      TEXT_IO.PUT_LINE( 
707         "TA2 - event_send - sending EVENT_10 to self after 5 seconds"
708      );
709      RTEMS.TIMER_FIRE_WHEN( 
710         SPTEST.TIMER_ID( 5 ),
711         TIME,
712         SPTEST.TA2_SEND_10_TO_SELF'ACCESS,
713         RTEMS.NULL_ADDRESS,
714         STATUS
715      );
716      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TIMER_FIRE_WHEN 5 SECONDS" );
717
718      TEXT_IO.PUT_LINE( 
719         "TA2 - event_receive - waiting forever on EVENT_10"
720      );
721      RTEMS.EVENT_RECEIVE( 
722         RTEMS.EVENT_10,
723         RTEMS.DEFAULT_OPTIONS,
724         RTEMS.NO_TIMEOUT,
725         EVENTOUT,
726         STATUS
727      );
728      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "EVENT_RECEIVE of 10" );
729
730      RTEMS.CLOCK_GET( RTEMS.CLOCK_GET_TOD, TIME'ADDRESS, STATUS );
731      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TA1 CLOCK_GET" );
732
733      TEXT_IO.PUT( "TA2 - EVENT_10 received - eventout => ");
734      UNSIGNED32_IO.PUT( EVENTOUT, BASE => 16, WIDTH => 8 );
735      TEXT_IO.NEW_LINE;
736
737      TEST_SUPPORT.PRINT_TIME( "TA1 - clock_get - ", TIME, "" );
738      TEXT_IO.NEW_LINE;
739
740      TEXT_IO.PUT_LINE( "TA2 - event_receive - PENDING_EVENTS" );
741      RTEMS.EVENT_RECEIVE( 
742         RTEMS.PENDING_EVENTS,
743         RTEMS.DEFAULT_OPTIONS,
744         RTEMS.NO_TIMEOUT,
745         EVENTOUT,
746         STATUS
747      );
748      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "EVENT_RECEIVE of 10" );
749      TEXT_IO.PUT( "TA2 - eventout => ");
750      UNSIGNED32_IO.PUT( EVENTOUT, BASE => 16, WIDTH => 8 );
751      TEXT_IO.NEW_LINE;
752
753      TEXT_IO.PUT_LINE( 
754         "TA2 - event_receive - EVENT_19 - NO_WAIT"
755      );
756      RTEMS.EVENT_RECEIVE( 
757         RTEMS.EVENT_19,
758         RTEMS.NO_WAIT,
759         RTEMS.NO_TIMEOUT,
760         EVENTOUT,
761         STATUS
762      );
763      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "EVENT_RECEIVE of 10" );
764      TEXT_IO.PUT( "TA2 - EVENT_19 received - eventout => ");
765      UNSIGNED32_IO.PUT( EVENTOUT, BASE => 16, WIDTH => 8 );
766      TEXT_IO.NEW_LINE;
767
768      TEXT_IO.PUT_LINE( "TA2 - task_delete - deletes self" );
769      RTEMS.TASK_DELETE( SPTEST.TASK_ID( 2 ), STATUS );
770      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_DELETE of TA2" );
771
772   end TASK_2;
773
774--PAGE
775--
776--  TA1_SEND_18_TO_SELF_5_SECONDS
777--
778
779   procedure TA1_SEND_18_TO_SELF_5_SECONDS (
780      IGNORED_ID      : in     RTEMS.ID;
781      IGNORED_ADDRESS : in     RTEMS.ADDRESS
782   )
783   is
784      STATUS : RTEMS.STATUS_CODES;
785   begin
786
787      RTEMS.EVENT_SEND( SPTEST.TASK_ID( 1 ), RTEMS.EVENT_18, STATUS );
788      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "EVENT_SEND of 18" );
789
790   end TA1_SEND_18_TO_SELF_5_SECONDS;
791
792--PAGE
793--
794--  TA1_SEND_8_TO_SELF_60_SECONDS
795--
796
797   procedure TA1_SEND_8_TO_SELF_60_SECONDS (
798      IGNORED_ID      : in     RTEMS.ID;
799      IGNORED_ADDRESS : in     RTEMS.ADDRESS
800   )
801   is
802      STATUS : RTEMS.STATUS_CODES;
803   begin
804
805      RTEMS.EVENT_SEND( SPTEST.TASK_ID( 1 ), RTEMS.EVENT_8, STATUS );
806      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "EVENT_SEND of 8" );
807
808   end TA1_SEND_8_TO_SELF_60_SECONDS;
809
810--PAGE
811--
812--  TA1_SEND_9_TO_SELF_60_SECONDS
813--
814
815   procedure TA1_SEND_9_TO_SELF_60_SECONDS (
816      IGNORED_ID      : in     RTEMS.ID;
817      IGNORED_ADDRESS : in     RTEMS.ADDRESS
818   )
819   is
820      STATUS : RTEMS.STATUS_CODES;
821   begin
822
823      RTEMS.EVENT_SEND( SPTEST.TASK_ID( 1 ), RTEMS.EVENT_9, STATUS );
824      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "EVENT_SEND of 9" );
825
826   end TA1_SEND_9_TO_SELF_60_SECONDS;
827
828--PAGE
829--
830--  TA1_SEND_10_TO_SELF
831--
832
833   procedure TA1_SEND_10_TO_SELF (
834      IGNORED_ID      : in     RTEMS.ID;
835      IGNORED_ADDRESS : in     RTEMS.ADDRESS
836   )
837   is
838      STATUS : RTEMS.STATUS_CODES;
839   begin
840
841      RTEMS.EVENT_SEND( SPTEST.TASK_ID( 1 ), RTEMS.EVENT_10, STATUS );
842      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "EVENT_SEND of 10" );
843
844   end TA1_SEND_10_TO_SELF;
845
846--PAGE
847--
848--  TA1_SEND_1_TO_SELF_EVERY_SECOND
849--
850
851   procedure TA1_SEND_1_TO_SELF_EVERY_SECOND (
852      IGNORED_ID      : in     RTEMS.ID;
853      IGNORED_ADDRESS : in     RTEMS.ADDRESS
854   )
855   is
856      STATUS : RTEMS.STATUS_CODES;
857   begin
858
859      RTEMS.EVENT_SEND( SPTEST.TASK_ID( 1 ), RTEMS.EVENT_1, STATUS );
860      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "EVENT_SEND of 1" );
861
862   end TA1_SEND_1_TO_SELF_EVERY_SECOND;
863
864--PAGE
865--
866--  TA1_SEND_11_TO_SELF
867--
868
869   procedure TA1_SEND_11_TO_SELF (
870      IGNORED_ID      : in     RTEMS.ID;
871      IGNORED_ADDRESS : in     RTEMS.ADDRESS
872   )
873   is
874      STATUS : RTEMS.STATUS_CODES;
875   begin
876
877      RTEMS.EVENT_SEND( SPTEST.TASK_ID( 1 ), RTEMS.EVENT_11, STATUS );
878      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "EVENT_SEND of 11" );
879
880   end TA1_SEND_11_TO_SELF;
881
882--PAGE
883--
884--  TA2_SEND_10_TO_SELF
885--
886
887   procedure TA2_SEND_10_TO_SELF (
888      IGNORED_ID      : in     RTEMS.ID;
889      IGNORED_ADDRESS : in     RTEMS.ADDRESS
890   )
891   is
892      STATUS : RTEMS.STATUS_CODES;
893   begin
894
895      RTEMS.EVENT_SEND( SPTEST.TASK_ID( 2 ), RTEMS.EVENT_10, STATUS );
896      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "EVENT_SEND of 10" );
897
898   end TA2_SEND_10_TO_SELF;
899
900end SPTEST;
Note: See TracBrowser for help on using the repository browser.