source: rtems/c/src/ada-tests/sptests/sp09/sptest.adb @ bf9ae83

4.104.114.84.95
Last change on this file since bf9ae83 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: 84.6 KB
Line 
1--
2--  SPTEST / BODY
3--
4--  DESCRIPTION:
5--
6--  This package is the implementation of Test 9 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 BSP;
25with INTERFACES; use INTERFACES;
26with RTEMS;
27with TEST_SUPPORT;
28with TEXT_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 9 ***" );
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      SPTEST.TASK_NAME( 6 )   := RTEMS.BUILD_NAME(  'T', 'A', '6', ' ' );
52      SPTEST.TASK_NAME( 7 )   := RTEMS.BUILD_NAME(  'T', 'A', '7', ' ' );
53      SPTEST.TASK_NAME( 8 )   := RTEMS.BUILD_NAME(  'T', 'A', '8', ' ' );
54      SPTEST.TASK_NAME( 9 )   := RTEMS.BUILD_NAME(  'T', 'A', '9', ' ' );
55      SPTEST.TASK_NAME( 10 )  := RTEMS.BUILD_NAME(  'T', 'A', 'A', ' ' );
56
57      SPTEST.TIMER_NAME( 1 )   := RTEMS.BUILD_NAME(  'T', 'M', '1', ' ' );
58
59      SPTEST.SEMAPHORE_NAME( 1 ) := RTEMS.BUILD_NAME( 'S', 'M', '1', ' ' );
60      SPTEST.SEMAPHORE_NAME( 2 ) := RTEMS.BUILD_NAME( 'S', 'M', '2', ' ' );
61      SPTEST.SEMAPHORE_NAME( 3 ) := RTEMS.BUILD_NAME( 'S', 'M', '3', ' ' );
62
63      SPTEST.QUEUE_NAME( 1 )     := RTEMS.BUILD_NAME( 'M', 'Q', '1', ' ' );
64      SPTEST.QUEUE_NAME( 2 )     := RTEMS.BUILD_NAME( 'M', 'Q', '2', ' ' );
65
66      SPTEST.PARTITION_NAME( 1 ) := RTEMS.BUILD_NAME( 'P', 'T', '1', ' ' );
67
68      SPTEST.REGION_NAME( 1 )    := RTEMS.BUILD_NAME( 'R', 'N', '1', ' ' );
69
70      SPTEST.PORT_NAME( 1 )      := RTEMS.BUILD_NAME( 'D', 'P', '1', ' ' );
71
72      SPTEST.PERIOD_NAME( 1 )    := RTEMS.BUILD_NAME( 'T', 'M', '1', ' ' );
73
74--      RTEMS.TASK_CREATE(
75--         SPTEST.TASK_NAME( 1 ),
76--         4,
77--         10,
78--         RTEMS.DEFAULT_MODES,
79--         RTEMS.DEFAULT_ATTRIBUTES,
80--         SPTEST.TASK_ID( 1 ),
81--         STATUS
82--      );
83--       TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
84--          STATUS,
85--          RTEMS.INVALID_SIZE,
86--          "TASK_CREATE WITH ILLEGAL STACK SIZE"
87--       );
88      TEXT_IO.PUT_LINE( "INIT - task_create - INVALID_SIZE -- NOT CHECKED" );
89
90      RTEMS.TASK_CREATE(
91         SPTEST.TASK_NAME( 1 ),
92         0,
93         2048,
94         RTEMS.DEFAULT_MODES,
95         RTEMS.DEFAULT_ATTRIBUTES,
96         SPTEST.TASK_ID( 1 ),
97         STATUS
98      );
99      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
100         STATUS,
101         RTEMS.INVALID_PRIORITY,
102         "TASK_CREATE WITH ILLEGAL PRIORITY"
103      );
104      TEXT_IO.PUT_LINE( "INIT - task_create - INVALID_PRIORITY" );
105
106      RTEMS.TASK_CREATE(
107         SPTEST.TASK_NAME( 1 ),
108         4,
109         2048,
110         RTEMS.DEFAULT_MODES,
111         RTEMS.DEFAULT_ATTRIBUTES,
112         SPTEST.TASK_ID( 1 ),
113         STATUS
114      );
115      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_CREATE OF TA1" );
116
117      RTEMS.TASK_RESTART(
118         SPTEST.TASK_ID( 1 ),
119         0,
120         STATUS
121      );
122      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
123         STATUS,
124         RTEMS.INCORRECT_STATE,
125         "TASK_RESTART OF DORMANT TASK"
126      );
127      TEXT_IO.PUT_LINE( "INIT - task_restart - INCORRECT_STATE" );
128
129      RTEMS.TASK_START(
130         SPTEST.TASK_ID( 1 ),
131         SPTEST.TASK_1'ACCESS,
132         0,
133         STATUS
134      );
135      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_START OF TA1" );
136
137      RTEMS.TASK_DELETE( RTEMS.SELF, STATUS );
138      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_DELETE OF SELF" );
139
140   end INIT;
141
142--PAGE
143--
144--  DELAYED_SUBPROGRAM
145--
146
147   procedure DELAYED_SUBPROGRAM (
148      IGNORED_ID      : in     RTEMS.ID;
149      IGNORED_ADDRESS : in     RTEMS.ADDRESS
150   ) is
151   begin
152
153      NULL;
154
155   end DELAYED_SUBPROGRAM;
156
157--PAGE
158--
159--  SERVICE_ROUTINE
160--
161
162   procedure SERVICE_ROUTINE (
163      IGNORED : in     RTEMS.VECTOR_NUMBER
164   ) is
165   begin
166
167      NULL;
168
169   end SERVICE_ROUTINE;
170
171--PAGE
172--
173--  SCREEN_1
174--
175
176   procedure SCREEN_1
177   is
178      NOTEPAD_VALUE     : RTEMS.UNSIGNED32;
179      SELF_ID           : RTEMS.ID;
180      PREVIOUS_PRIORITY : RTEMS.TASK_PRIORITY;
181      STATUS            : RTEMS.STATUS_CODES;
182   begin
183
184      RTEMS.TASK_DELETE( 100, STATUS );
185      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
186         STATUS,
187         RTEMS.INVALID_ID,
188         "TASK_DELETE WITH ILLEGAL ID"
189      );
190      TEXT_IO.PUT_LINE( "TA1 - task_delete - INVALID_ID" );
191
192--      RTEMS.TASK_GET_NOTE( RTEMS.SELF,
193--                           RTEMS.NOTEPAD_INDEX'LAST + 10,
194--                           NOTEPAD_VALUE,
195--                           STATUS
196--      );
197--      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
198--         STATUS,
199--         RTEMS.INVALID_NUMBER,
200--         "TASK_GET_NOTE WITH ILLEGAL NOTEPAD"
201--      );
202--      TEXT_IO.PUT_LINE( "TA1 - task_get_note - INVALID_NUMBER" );
203      TEXT_IO.PUT_LINE(
204         "TA1 - task_get_note - INVALID_NUMBER -- constraint error"
205      );
206
207      RTEMS.TASK_GET_NOTE( 
208         100, 
209         RTEMS.NOTEPAD_INDEX'LAST, 
210         NOTEPAD_VALUE, 
211         STATUS
212      );
213      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
214         STATUS,
215         RTEMS.INVALID_ID,
216         "TASK_GET_NOTE WITH ILLEGAL ID"
217      );
218      TEXT_IO.PUT_LINE( "TA1 - task_get_note - INVALID_ID" );
219
220      RTEMS.TASK_IDENT(
221         RTEMS.SELF,
222         RTEMS.SEARCH_ALL_NODES, 
223         SELF_ID,
224         STATUS
225      );
226      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_IDENT OF SELF" );
227      if SELF_ID /= SPTEST.TASK_ID( 1 ) then
228         TEXT_IO.PUT_LINE( "ERROR - task_ident - incorrect ID returned!" );
229         RTEMS.SHUTDOWN_EXECUTIVE( 0 );
230      end if;
231      TEXT_IO.PUT_LINE(
232         "TA1 - task_ident - current task SUCCESSFUL"
233      );
234
235      RTEMS.TASK_IDENT(
236         100,
237         RTEMS.SEARCH_ALL_NODES,
238         SPTEST.JUNK_ID,
239         STATUS
240      );
241      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
242         STATUS,
243         RTEMS.INVALID_NAME,
244         "TASK_IDENT WITH ILLEGAL NAME (local)"
245      );
246      TEXT_IO.PUT_LINE( "TA1 - task_ident - global INVALID_NAME" );
247
248      RTEMS.TASK_IDENT( 100, 1, SPTEST.JUNK_ID, STATUS );
249      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
250         STATUS,
251         RTEMS.INVALID_NAME,
252         "TASK_IDENT WITH ILLEGAL NAME (global)"
253      );
254      TEXT_IO.PUT_LINE( "TA1 - task_ident - local INVALID_NAME" );
255
256      RTEMS.TASK_IDENT( 100, 2, SPTEST.JUNK_ID, STATUS );
257      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
258         STATUS,
259         RTEMS.INVALID_NODE,
260         "TASK_IDENT WITH ILLEGAL NODE"
261      );
262      TEXT_IO.PUT_LINE( "TA1 - task_ident - INVALID_NODE" );
263
264      RTEMS.TASK_RESTART( 100, 0, STATUS );
265      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
266         STATUS,
267         RTEMS.INVALID_ID,
268         "TASK_RESTART WITH ILLEGAL ID"
269      );
270      TEXT_IO.PUT_LINE( "TA1 - task_restart - INVALID_ID" );
271
272      RTEMS.TASK_RESUME( 100, STATUS );
273      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
274         STATUS,
275         RTEMS.INVALID_ID,
276         "TASK_RESUME WITH ILLEGAL ID"
277      );
278      TEXT_IO.PUT_LINE( "TA1 - task_resume - INVALID_ID" );
279
280      RTEMS.TASK_RESUME( RTEMS.SELF, STATUS );
281      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
282         STATUS,
283         RTEMS.INCORRECT_STATE,
284         "TASK_RESUME OF READY TASK"
285      );
286      TEXT_IO.PUT_LINE( "TA1 - task_resume - INCORRECT_STATE" );
287
288--      RTEMS.TASK_SET_PRIORITY( RTEMS.SELF, 512, PREVIOUS_PRIORITY, STATUS );
289--      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
290--         STATUS,
291--         RTEMS.INVALID_PRIORITY,
292--         "TASK_SET_PRIORITY WITH ILLEGAL PRIORITY"
293--      );
294--      TEXT_IO.PUT_LINE(
295--         "TA1 - task_set_priority - INVALID_PRIORITY"
296--      );
297      TEXT_IO.PUT_LINE(
298         "TA1 - task_set_priority - INVALID_PRIORITY -- constraint error"
299      );
300
301      RTEMS.TASK_SET_PRIORITY( 100, 8, PREVIOUS_PRIORITY, STATUS );
302      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
303         STATUS,
304         RTEMS.INVALID_ID,
305         "TASK_SET_PRIORITY WITH ILLEGAL ID"
306      );
307      TEXT_IO.PUT_LINE( "TA1 - task_set_priority - INVALID_ID" );
308
309--       RTEMS.TASK_SET_NOTE( RTEMS.SELF,
310--                            RTEMS.NOTEPAD_INDEX'LAST + 10,
311--                            NOTEPAD_VALUE,
312--                            STATUS
313--       );
314--       TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
315--          STATUS,
316--          RTEMS.INVALID_NUMBER,
317--          "TASK_SET_NOTE WITH ILLEGAL NOTEPAD"
318--       );
319--      TEXT_IO.PUT_LINE( "TA1 - task_set_note - INVALID_NUMBER" );
320      TEXT_IO.PUT_LINE(
321         "TA1 - task_set_note - INVALID_NUMBER -- constraint error"
322      );
323
324      RTEMS.TASK_SET_NOTE( 
325         100, 
326         RTEMS.NOTEPAD_INDEX'LAST, 
327         NOTEPAD_VALUE, 
328         STATUS
329      );
330      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
331         STATUS,
332         RTEMS.INVALID_ID,
333         "TASK_SET_NOTE WITH ILLEGAL ID"
334      );
335      TEXT_IO.PUT_LINE( "TA1 - task_set_note - INVALID_ID" );
336
337      RTEMS.TASK_START( 100, SPTEST.TASK_1'ACCESS, 0, STATUS );
338      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
339         STATUS,
340         RTEMS.INVALID_ID,
341         "TASK_START WITH ILLEGAL ID"
342      );
343      TEXT_IO.PUT_LINE( "TA1 - task_start - INVALID_ID" );
344
345      RTEMS.TASK_START( RTEMS.SELF, SPTEST.TASK_1'ACCESS, 0, STATUS );
346      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
347         STATUS,
348         RTEMS.INCORRECT_STATE,
349         "TASK_START OF READY TASK"
350      );
351      TEXT_IO.PUT_LINE( "TA1 - task_start - INCORRECT_STATE" );
352
353      RTEMS.TASK_SUSPEND( 100, STATUS );
354      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
355         STATUS,
356         RTEMS.INVALID_ID,
357         "TASK_SUSPEND WITH INVALID ID"
358      );
359      TEXT_IO.PUT_LINE( "TA1 - task_suspend - INVALID_ID" );
360
361   end SCREEN_1;
362
363--PAGE
364--
365--  SCREEN_2
366--
367
368   procedure SCREEN_2
369   is
370      TIME   : RTEMS.TIME_OF_DAY;
371      STATUS : RTEMS.STATUS_CODES;
372   begin
373
374-- errors before clock is set
375
376      RTEMS.CLOCK_GET( RTEMS.CLOCK_GET_TOD, TIME'ADDRESS, STATUS );
377     
378      if RTEMS.IS_STATUS_SUCCESSFUL( STATUS ) then
379         TEXT_IO.PUT_LINE(
380            "TA1 - clock_get - NOT_DEFINED -- DID THE BSP SET THE TIME OF DAY?"
381         );
382      else
383         TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
384            STATUS,
385            RTEMS.NOT_DEFINED,
386            "CLOCK_GET BEFORE CLOCK IS SET"
387         );
388         TEXT_IO.PUT_LINE( "TA1 - clock_get - NOT_DEFINED" );
389      end if;
390
391      RTEMS.TASK_WAKE_WHEN( TIME, STATUS );
392      if RTEMS.IS_STATUS_SUCCESSFUL( STATUS ) then
393         TEXT_IO.PUT( "TA1 - task_wake_when - NOT_DEFINED -- " );
394         TEXT_IO.PUT_LINE( "DID THE BSP SET THE TIME OF DAY?" );
395      else
396         TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
397            STATUS,
398            RTEMS.NOT_DEFINED,
399            "TASK_WAKE_WHEN BEFORE CLOCK IS SET"
400         );
401         TEXT_IO.PUT_LINE( "TA1 - task_wake_when - NOT_DEFINED" );
402      end if;
403
404      RTEMS.TIMER_FIRE_WHEN(
405         0,
406         TIME,
407         SPTEST.DELAYED_SUBPROGRAM'ACCESS,
408         RTEMS.NULL_ADDRESS,
409         STATUS
410      );
411
412      if RTEMS.IS_STATUS_SUCCESSFUL( STATUS ) then
413         TEXT_IO.PUT( "TA1 - task_fire_when - NOT_DEFINED -- " );
414         TEXT_IO.PUT_LINE( "DID THE BSP SET THE TIME OF DAY?" );
415      else
416
417         TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
418            STATUS,
419            RTEMS.NOT_DEFINED,
420            "TIMER_FIRE_WHEN BEFORE CLOCK IS SET"
421         );
422         TEXT_IO.PUT_LINE( "TA1 - timer_fire_when - NOT_DEFINED" );
423
424      end if;
425
426-- invalid time of day field
427
428      TIME := ( 1987, 2, 5, 8, 30, 45, 0 );
429      TEST_SUPPORT.PRINT_TIME( "TA1 - clock_set - ", TIME, "" );
430      RTEMS.CLOCK_SET( TIME, STATUS );
431      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
432         STATUS,
433         RTEMS.INVALID_CLOCK,
434         "CLOCK_SET WITH INVALID YEAR"
435      );
436      TEXT_IO.PUT_LINE( " - INVALID_CLOCK" );
437
438      TIME := ( 1988, 15, 5, 8, 30, 45, 0 );
439      TEST_SUPPORT.PRINT_TIME( "TA1 - clock_set - ", TIME, "" );
440      RTEMS.CLOCK_SET( TIME, STATUS );
441      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
442         STATUS,
443         RTEMS.INVALID_CLOCK,
444         "CLOCK_SET WITH INVALID MONTH"
445      );
446      TEXT_IO.PUT_LINE( " - INVALID_CLOCK" );
447
448      TIME := ( 1988, 2, 32, 8, 30, 45, 0 );
449      TEST_SUPPORT.PRINT_TIME( "TA1 - clock_set - ", TIME, "" );
450      RTEMS.CLOCK_SET( TIME, STATUS );
451      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
452         STATUS,
453         RTEMS.INVALID_CLOCK,
454         "CLOCK_SET WITH INVALID DAY"
455      );
456      TEXT_IO.PUT_LINE( " - INVALID_CLOCK" );
457
458      TIME := ( 1988, 2, 5, 25, 30, 45, 0 );
459      TEST_SUPPORT.PRINT_TIME( "TA1 - clock_set - ", TIME, "" );
460      RTEMS.CLOCK_SET( TIME, STATUS );
461      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
462         STATUS,
463         RTEMS.INVALID_CLOCK,
464         "CLOCK_SET WITH INVALID HOUR"
465      );
466      TEXT_IO.PUT_LINE( " - INVALID_CLOCK" );
467
468      TIME := ( 1988, 2, 5, 8, 61, 45, 0 );
469      TEST_SUPPORT.PRINT_TIME( "TA1 - clock_set - ", TIME, "" );
470      RTEMS.CLOCK_SET( TIME, STATUS );
471      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
472         STATUS,
473         RTEMS.INVALID_CLOCK,
474         "CLOCK_SET WITH INVALID MINUTE"
475      );
476      TEXT_IO.PUT_LINE( " - INVALID_CLOCK" );
477
478      TIME := ( 1988, 2, 5, 8, 30, 61, 0 );
479      TEST_SUPPORT.PRINT_TIME( "TA1 - clock_set - ", TIME, "" );
480      RTEMS.CLOCK_SET( TIME, STATUS );
481      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
482         STATUS,
483         RTEMS.INVALID_CLOCK,
484         "CLOCK_SET WITH INVALID SECOND"
485      );
486      TEXT_IO.PUT_LINE( " - INVALID_CLOCK" );
487
488      TIME := ( 1988, 2, 5, 8, 30, 45, TEST_SUPPORT.TICKS_PER_SECOND + 1 );
489      TEST_SUPPORT.PRINT_TIME( "TA1 - clock_set - ", TIME, "" );
490      RTEMS.CLOCK_SET( TIME, STATUS );
491      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
492         STATUS,
493         RTEMS.INVALID_CLOCK,
494         "CLOCK_SET WITH INVALID TICKS PER SECOND"
495      );
496      TEXT_IO.PUT_LINE( " - INVALID_CLOCK" );
497
498      TIME := ( 1988, 2, 5, 8, 30, 45, 0 );
499      TEST_SUPPORT.PRINT_TIME( "TA1 - clock_set - ", TIME, "" );
500      RTEMS.CLOCK_SET( TIME, STATUS );
501      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "CLOCK_SET SUCCESSFUL" );
502      TEXT_IO.PUT_LINE( " - SUCCESSFUL" );
503
504-- task_wake_when
505
506      TIME := ( 1988, 2, 5, 8, 30, 48, TEST_SUPPORT.TICKS_PER_SECOND + 1 );
507      TEXT_IO.PUT( "TA1 - task_wake_when - TICK INVALID - " );
508      TEXT_IO.PUT_LINE( "sleep about 3 seconds" );
509      RTEMS.TASK_WAKE_WHEN( TIME, STATUS );
510      TEST_SUPPORT.DIRECTIVE_FAILED(
511         STATUS,
512         "TASK_WAKE_WHEN WITH INVALID TICKS PER SECOND"
513      );
514      TEXT_IO.PUT( "TA1 - task_wake_when - TICK INVALID - " );
515      TEXT_IO.PUT_LINE( "woke up SUCCESSFUL" );
516
517      TIME := ( 1961, 2, 5, 8, 30, 48, 0 );
518      TEST_SUPPORT.PRINT_TIME( "TA1 - task_wake_when - ", TIME, "" );
519      RTEMS.TASK_WAKE_WHEN( TIME, STATUS );
520      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
521         STATUS,
522         RTEMS.INVALID_CLOCK,
523         "TASK_WAKE_WHEN WITH INVALID YEAR"
524      );
525      TEXT_IO.PUT_LINE( " - INVALID_CLOCK" );
526
527      TIME := ( 1988, 2, 5, 25, 30, 48, 0 );
528      TEST_SUPPORT.PRINT_TIME( "TA1 - task_wake_when - ", TIME, "" );
529      RTEMS.TASK_WAKE_WHEN( TIME, STATUS );
530      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
531         STATUS,
532         RTEMS.INVALID_CLOCK,
533         "TASK_WAKE_WHEN WITH INVALID HOUR"
534      );
535      TEXT_IO.PUT_LINE( " - INVALID_CLOCK" );
536
537      RTEMS.CLOCK_GET( RTEMS.CLOCK_GET_TOD, TIME'ADDRESS, STATUS );
538      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "CLOCK_GET SUCCESSFUL" );
539      TEST_SUPPORT.PRINT_TIME( "TA1 - current time - ", TIME, "" );
540      TEXT_IO.NEW_LINE;
541
542      TIME.MONTH := 1;
543      TEST_SUPPORT.PRINT_TIME( "TA1 - task_wake_when - ", TIME, "" );
544      RTEMS.TASK_WAKE_WHEN( TIME, STATUS );
545      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
546         STATUS,
547         RTEMS.INVALID_CLOCK,
548         "TASK_WAKE_WHEN BEFORE CURRENT TIME"
549      );
550      TEXT_IO.PUT_LINE( " - INVALID_CLOCK" );
551
552   end SCREEN_2;
553
554--PAGE
555--
556--  SCREEN_3
557--
558
559   procedure SCREEN_3
560   is
561      TASK_NAME : RTEMS.NAME;
562      STATUS    : RTEMS.STATUS_CODES;
563   begin
564
565      TASK_NAME := 1;
566
567      RTEMS.TASK_CREATE(
568         0,
569         1,
570         2048,
571         RTEMS.DEFAULT_MODES,
572         RTEMS.DEFAULT_ATTRIBUTES,
573         SPTEST.JUNK_ID,
574         STATUS
575      );
576      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
577         STATUS,
578         RTEMS.INVALID_NAME,
579         "TASK_CREATE WITH ILLEGAL NAME"
580      );
581      TEXT_IO.PUT_LINE( 
582         "TA1 - task_create - INVALID_NAME"
583      );
584
585      RTEMS.TASK_CREATE(
586         TASK_NAME,
587         1,
588         BSP.CONFIGURATION.WORKSPACE_SIZE,
589         RTEMS.DEFAULT_MODES,
590         RTEMS.DEFAULT_ATTRIBUTES,
591         SPTEST.JUNK_ID,
592         STATUS
593      );
594      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
595         STATUS,
596         RTEMS.UNSATISFIED,
597         "TASK_CREATE WITH A STACK SIZE LARGER THAN THE WORKSPACE"
598      );
599      TEXT_IO.PUT_LINE(
600         "TA1 - task_create - stack size - UNSATISFIED"
601      );
602
603      RTEMS.TASK_CREATE(
604         SPTEST.TASK_NAME( 2 ),
605         4,
606         2048,
607         RTEMS.DEFAULT_MODES,
608         RTEMS.DEFAULT_ATTRIBUTES,
609         SPTEST.TASK_ID( 2 ),
610         STATUS
611      );
612      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_CREATE OF TA2" );
613      TEXT_IO.PUT_LINE(
614         "TA1 - task_create - TA2 created - SUCCESSFUL"
615      );
616
617      RTEMS.TASK_SUSPEND( SPTEST.TASK_ID( 2 ), STATUS );
618      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_SUSPEND OF TA2" );
619      TEXT_IO.PUT_LINE(
620         "TA1 - task_suspend - suspend TA2 - SUCCESSFUL"
621      );
622
623      RTEMS.TASK_SUSPEND( SPTEST.TASK_ID( 2 ), STATUS );
624      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
625         STATUS,
626         RTEMS.ALREADY_SUSPENDED,
627         "TASK_SUSPEND ON SUSPENDED TA2"
628      );
629      TEXT_IO.PUT_LINE(
630         "TA1 - task_suspend - suspend TA2 - ALREADY_SUSPENDED"
631      );
632
633      RTEMS.TASK_RESUME( SPTEST.TASK_ID( 2 ), STATUS );
634      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_RESUME OF TA2" );
635      TEXT_IO.PUT_LINE(
636         "TA1 - task_resume - TA2 resumed - SUCCESSFUL"
637      );
638
639      RTEMS.TASK_CREATE(
640         SPTEST.TASK_NAME( 3 ),
641         4,
642         2048,
643         RTEMS.DEFAULT_MODES,
644         RTEMS.DEFAULT_ATTRIBUTES,
645         SPTEST.TASK_ID( 3 ),
646         STATUS
647      );
648      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_CREATE OF TA3" );
649      TEXT_IO.PUT_LINE(
650         "TA1 - task_create - TA3 created - SUCCESSFUL"
651      );
652
653      RTEMS.TASK_CREATE(
654         SPTEST.TASK_NAME( 4 ),
655         4,
656         2048,
657         RTEMS.DEFAULT_MODES,
658         RTEMS.DEFAULT_ATTRIBUTES,
659         SPTEST.TASK_ID( 4 ),
660         STATUS
661      );
662      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_CREATE OF TA4" );
663      TEXT_IO.PUT_LINE(
664         "TA1 - task_create - 4 created - SUCCESSFUL"
665      );
666
667      RTEMS.TASK_CREATE(
668         SPTEST.TASK_NAME( 5 ),
669         4,
670         2048,
671         RTEMS.DEFAULT_MODES,
672         RTEMS.DEFAULT_ATTRIBUTES,
673         SPTEST.TASK_ID( 5 ),
674         STATUS
675      );
676      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_CREATE OF TA5" );
677      TEXT_IO.PUT_LINE(
678         "TA1 - task_create - 5 created - SUCCESSFUL"
679      );
680
681      RTEMS.TASK_CREATE(
682         SPTEST.TASK_NAME( 6 ),
683         4,
684         2048,
685         RTEMS.DEFAULT_MODES,
686         RTEMS.DEFAULT_ATTRIBUTES,
687         SPTEST.TASK_ID( 6 ),
688         STATUS
689      );
690      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_CREATE OF TA6" );
691      TEXT_IO.PUT_LINE(
692         "TA1 - task_create - 6 created - SUCCESSFUL"
693      );
694
695      RTEMS.TASK_CREATE(
696         SPTEST.TASK_NAME( 7 ),
697         4,
698         2048,
699         RTEMS.DEFAULT_MODES,
700         RTEMS.DEFAULT_ATTRIBUTES,
701         SPTEST.TASK_ID( 7 ),
702         STATUS
703      );
704      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_CREATE OF TA7" );
705      TEXT_IO.PUT_LINE(
706         "TA1 - task_create - 7 created - SUCCESSFUL"
707      );
708
709      RTEMS.TASK_CREATE(
710         SPTEST.TASK_NAME( 8 ),
711         4,
712         2048,
713         RTEMS.DEFAULT_MODES,
714         RTEMS.DEFAULT_ATTRIBUTES,
715         SPTEST.TASK_ID( 8 ),
716         STATUS
717      );
718      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_CREATE OF TA8" );
719      TEXT_IO.PUT_LINE(
720         "TA1 - task_create - 8 created - SUCCESSFUL"
721      );
722
723      RTEMS.TASK_CREATE(
724         SPTEST.TASK_NAME( 9 ),
725         4,
726         2048,
727         RTEMS.DEFAULT_MODES,
728         RTEMS.DEFAULT_ATTRIBUTES,
729         SPTEST.TASK_ID( 9 ),
730         STATUS
731      );
732      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_CREATE OF TA9" );
733      TEXT_IO.PUT_LINE(
734         "TA1 - task_create - 9 created - SUCCESSFUL"
735      );
736
737      RTEMS.TASK_CREATE(
738         SPTEST.TASK_NAME( 10 ),
739         4,
740         2048,
741         RTEMS.DEFAULT_MODES,
742         RTEMS.DEFAULT_ATTRIBUTES,
743         SPTEST.TASK_ID( 10 ),
744         STATUS
745      );
746      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_CREATE OF TA10" );
747      TEXT_IO.PUT_LINE(
748         "TA1 - task_create - 10 created - SUCCESSFUL"
749      );
750
751      RTEMS.TASK_CREATE(
752         TASK_NAME,
753         4,
754         2048,
755         RTEMS.DEFAULT_MODES,
756         RTEMS.DEFAULT_ATTRIBUTES,
757         SPTEST.JUNK_ID,
758         STATUS
759      );
760      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
761         STATUS,
762         RTEMS.TOO_MANY,
763         "TASK_CREATE FOR TOO MANY TASKS"
764      );
765      TEXT_IO.PUT_LINE( "TA1 - task_create - 11 - TOO_MANY" );
766
767      RTEMS.TASK_CREATE(
768         TASK_NAME,
769         4,
770         2048,
771         RTEMS.DEFAULT_MODES,
772         RTEMS.GLOBAL,
773         SPTEST.JUNK_ID,
774         STATUS
775      );
776      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
777         STATUS,
778         RTEMS.MP_NOT_CONFIGURED,
779         "TASK_CREATE OF GLOBAL TASK IN SINGLE CPU SYSTEM"
780      );
781      TEXT_IO.PUT_LINE( "TA1 - task_create - MP_NOT_CONFIGURED" );
782
783   end SCREEN_3;
784
785--PAGE
786--
787--  SCREEN_4
788--
789
790   procedure SCREEN_4
791   is
792      EVENT_OUT : RTEMS.EVENT_SET;
793      TIME      : RTEMS.TIME_OF_DAY;
794      STATUS    : RTEMS.STATUS_CODES;
795   begin
796
797      RTEMS.EVENT_RECEIVE(
798         RTEMS.EVENT_16,
799         RTEMS.NO_WAIT,
800         RTEMS.NO_TIMEOUT,
801         EVENT_OUT,
802         STATUS
803      );
804      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
805         STATUS,
806         RTEMS.UNSATISFIED,
807         "EVENT_RECEIVE UNSATISFIED (ALL)"
808      );
809      TEXT_IO.PUT_LINE(
810         "TA1 - event_receive - UNSATISFIED ( all conditions )"
811      );
812
813      RTEMS.EVENT_RECEIVE(
814         RTEMS.EVENT_16,
815         RTEMS.NO_WAIT + RTEMS.EVENT_ANY,
816         RTEMS.NO_TIMEOUT,
817         EVENT_OUT,
818         STATUS
819      );
820      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
821         STATUS,
822         RTEMS.UNSATISFIED,
823         "EVENT_RECEIVE UNSATISFIED (ANY)"
824      );
825      TEXT_IO.PUT_LINE(
826         "TA1 - event_receive - UNSATISFIED ( any conditions )"
827      );
828
829      TEXT_IO.PUT_LINE( "TA1 - event_receive - timeout in 3 seconds" );
830      RTEMS.EVENT_RECEIVE(
831         RTEMS.EVENT_16,
832         RTEMS.DEFAULT_OPTIONS,
833         3 * TEST_SUPPORT.TICKS_PER_SECOND,
834         EVENT_OUT,
835         STATUS
836      );
837      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
838         STATUS,
839         RTEMS.TIMEOUT,
840         "EVENT_RECEIVE AFTER 3 SECOND TIMEOUT"
841      );
842      TEXT_IO.PUT_LINE(
843         "TA1 - event_receive - woke with TIMEOUT"
844      );
845
846      RTEMS.EVENT_SEND(
847         100,
848         RTEMS.EVENT_16,
849         STATUS
850      );
851      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
852         STATUS,
853         RTEMS.INVALID_ID,
854         "EVENT_SEND WITH ILLEGAL ID"
855      );
856      TEXT_IO.PUT_LINE(
857         "TA1 - event_send - INVALID_ID"
858      );
859
860      TEXT_IO.PUT_LINE( 
861         "TA1 - task_wake_after - sleep 1 second - SUCCESSFUL" 
862      );
863      RTEMS.TASK_WAKE_AFTER( TEST_SUPPORT.TICKS_PER_SECOND, STATUS );
864      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_WAKE_AFTER (1 SECOND)" );
865
866      TIME := ( 1988, 2, 5, 8, 30, 45, 0 );
867      TEST_SUPPORT.PRINT_TIME( "TA1 - clock_set - ", TIME, "" );
868      RTEMS.CLOCK_SET( TIME, STATUS );
869      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "CLOCK_SET SUCCESSFUL" );
870      TEXT_IO.PUT_LINE( " - SUCCESSFUL" );
871
872   end SCREEN_4;
873
874--PAGE
875--
876--  SCREEN_5
877--
878
879   procedure SCREEN_5
880   is
881      COUNT          : RTEMS.UNSIGNED32;
882      STATUS         : RTEMS.STATUS_CODES;
883   begin
884
885      RTEMS.SEMAPHORE_CREATE(
886         0,
887         1,
888         RTEMS.DEFAULT_ATTRIBUTES,
889         SPTEST.JUNK_ID,
890         STATUS
891      );
892      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
893         STATUS,
894         RTEMS.INVALID_NAME,
895         "SEMAPHORE_CREATE WITH ILLEGAL NAME"
896      );
897      TEXT_IO.PUT_LINE( "TA1 - semaphore_create - INVALID_NAME" );
898
899      RTEMS.SEMAPHORE_CREATE(
900         SPTEST.SEMAPHORE_NAME( 1 ),
901         1,
902         RTEMS.DEFAULT_ATTRIBUTES,
903         SPTEST.SEMAPHORE_ID( 1 ),
904         STATUS
905      );
906      TEST_SUPPORT.DIRECTIVE_FAILED(
907         STATUS,
908         "SEMAPHORE_CREATE SUCCESSFUL"
909      );
910      TEXT_IO.PUT_LINE( "TA1 - semaphore_create - 1 - SUCCESSFUL" );
911
912      RTEMS.SEMAPHORE_CREATE(
913         SPTEST.SEMAPHORE_NAME( 2 ),
914         1,
915         RTEMS.BINARY_SEMAPHORE,
916         SPTEST.SEMAPHORE_ID( 2 ),
917         STATUS
918      );
919      TEST_SUPPORT.DIRECTIVE_FAILED(
920         STATUS,
921         "SEMAPHORE_CREATE SUCCESSFUL"
922      );
923      TEXT_IO.PUT_LINE( "TA1 - semaphore_create - 2 - SUCCESSFUL" );
924
925      RTEMS.SEMAPHORE_CREATE(
926         SPTEST.SEMAPHORE_NAME( 3 ),
927         1,
928         RTEMS.DEFAULT_ATTRIBUTES,
929         SPTEST.JUNK_ID,
930         STATUS
931      );
932      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
933         STATUS,
934         RTEMS.TOO_MANY,
935         "SEMAPHORE_CREATE OF TOO MANY"
936      );
937      TEXT_IO.PUT_LINE( "TA1 - semaphore_create - 3 - TOO_MANY" );
938
939      RTEMS.SEMAPHORE_CREATE(
940         SPTEST.SEMAPHORE_NAME( 1 ),
941         1,
942         RTEMS.INHERIT_PRIORITY + RTEMS.BINARY_SEMAPHORE + RTEMS.FIFO,
943         SPTEST.JUNK_ID,
944         STATUS
945      );
946      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
947         STATUS,
948         RTEMS.NOT_DEFINED,
949         "SEMAPHORE_CREATE OF FIFO INHERIT PRIORITY"
950      );
951      TEXT_IO.PUT_LINE("TA1 - semaphore_create - NOT_DEFINED");
952
953      RTEMS.SEMAPHORE_CREATE(
954         SPTEST.SEMAPHORE_NAME( 1 ),
955         1,
956         RTEMS.INHERIT_PRIORITY + RTEMS.COUNTING_SEMAPHORE + RTEMS.PRIORITY,
957         SPTEST.JUNK_ID,
958         STATUS
959      );
960      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
961         STATUS,
962         RTEMS.NOT_DEFINED,
963         "SEMAPHORE_CREATE OF COUNTING_SEMAPHORE INHERIT PRIORITY"
964      );
965      TEXT_IO.PUT_LINE("TA1 - semaphore_create - NOT_DEFINED");
966
967      RTEMS.SEMAPHORE_CREATE(
968         SPTEST.SEMAPHORE_NAME( 1 ),
969         2,
970         RTEMS.BINARY_SEMAPHORE,
971         SPTEST.JUNK_ID,
972         STATUS
973      );
974      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
975         STATUS,
976         RTEMS.INVALID_NUMBER,
977         "SEMAPHORE_CREATE OF BINARY_SEMAPHORE with COUNT > 1"
978      );
979      TEXT_IO.PUT_LINE("TA1 - semaphore_create - INVALID_NUMBER");
980
981      RTEMS.SEMAPHORE_CREATE(
982         SPTEST.SEMAPHORE_NAME( 3 ),
983         1,
984         RTEMS.GLOBAL,
985         SPTEST.JUNK_ID,
986         STATUS
987      );
988      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
989         STATUS,
990         RTEMS.MP_NOT_CONFIGURED,
991         "SEMAPHORE_CREATE OF MP_NOT_CONFIGURED"
992      );
993      TEXT_IO.PUT_LINE("TA1 - semaphore_create - MP_NOT_CONFIGURED");
994
995      RTEMS.SEMAPHORE_DELETE( 100, STATUS );
996      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
997         STATUS,
998         RTEMS.INVALID_ID,
999         "SEMAPHORE_DELETE WITH ILLEGAL ID"
1000      );
1001      TEXT_IO.PUT_LINE(
1002         "TA1 - semaphore_delete - unknown INVALID_ID"
1003      );
1004
1005      RTEMS.SEMAPHORE_DELETE( 16#10100#, STATUS );
1006      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
1007         STATUS,
1008         RTEMS.INVALID_ID,
1009         "SEMAPHORE_DELETE WITH LOCAL ILLEGAL ID"
1010      );
1011      TEXT_IO.PUT_LINE(
1012         "TA1 - semaphore_delete - local INVALID_ID"
1013      );
1014
1015      RTEMS.SEMAPHORE_IDENT(
1016         100,
1017         RTEMS.SEARCH_ALL_NODES,
1018         SPTEST.JUNK_ID,
1019         STATUS
1020      );
1021      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
1022         STATUS,
1023         RTEMS.INVALID_NAME,
1024         "SEMAPHORE_IDENT WITH ILLEGAL NAME (local)"
1025      );
1026      TEXT_IO.PUT_LINE(
1027         "TA1 - semaphore_ident - global INVALID_NAME"
1028      );
1029
1030      RTEMS.SEMAPHORE_IDENT( 100, 1, SPTEST.JUNK_ID, STATUS );
1031      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
1032         STATUS,
1033         RTEMS.INVALID_NAME,
1034         "SEMAPHORE_IDENT WITH ILLEGAL NAME (global)"
1035      );
1036      TEXT_IO.PUT_LINE(
1037         "TA1 - semaphore_ident - local INVALID_NAME"
1038      );
1039
1040  end SCREEN_5;
1041
1042--PAGE
1043--
1044--  SCREEN_6
1045--
1046
1047   procedure SCREEN_6
1048   is
1049      COUNT          : RTEMS.UNSIGNED32;
1050      STATUS         : RTEMS.STATUS_CODES;
1051   begin
1052
1053      RTEMS.SEMAPHORE_OBTAIN(
1054         100,
1055         RTEMS.DEFAULT_OPTIONS,
1056         RTEMS.NO_TIMEOUT,
1057         STATUS
1058      );
1059      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
1060         STATUS,
1061         RTEMS.INVALID_ID,
1062         "SEMAPHORE_OBTAIN WITH ILLEGAL ID"
1063      );
1064      TEXT_IO.PUT_LINE( "TA1 - semaphore_obtain - INVALID_ID" );
1065
1066      RTEMS.SEMAPHORE_OBTAIN(
1067         SPTEST.SEMAPHORE_ID( 1 ),
1068         RTEMS.DEFAULT_OPTIONS,
1069         RTEMS.NO_TIMEOUT,
1070         STATUS
1071      );
1072      TEST_SUPPORT.DIRECTIVE_FAILED(STATUS, "SEMAPHORE_OBTAIN SUCCESSFUL");
1073      TEXT_IO.PUT_LINE( 
1074         "TA1 - semaphore_obtain - got sem 1 - SUCCESSFUL"
1075      );
1076
1077      RTEMS.SEMAPHORE_OBTAIN(
1078         SPTEST.SEMAPHORE_ID( 1 ),
1079         RTEMS.NO_WAIT,
1080         RTEMS.NO_TIMEOUT,
1081         STATUS
1082      );
1083      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
1084         STATUS,
1085         RTEMS.UNSATISFIED,
1086         "SEMAPHORE_OBTAIN NOT AVAILABLE"
1087      );
1088      TEXT_IO.PUT_LINE( "TA1 - semaphore_obtain - UNSATISFIED" );
1089
1090      TEXT_IO.PUT_LINE( "TA1 - semaphore_obtain - timeout in 3 seconds" );
1091      RTEMS.SEMAPHORE_OBTAIN(
1092         SPTEST.SEMAPHORE_ID( 1 ),
1093         RTEMS.DEFAULT_OPTIONS,
1094         3 * TEST_SUPPORT.TICKS_PER_SECOND,
1095         STATUS
1096      );
1097      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
1098         STATUS,
1099         RTEMS.TIMEOUT,
1100         "SEMAPHORE_OBTAIN NOT AVAILABLE"
1101      );
1102      TEXT_IO.PUT_LINE(
1103         "TA1 - semaphore_obtain - woke with TIMEOUT"
1104      );
1105
1106      RTEMS.SEMAPHORE_RELEASE( SPTEST.SEMAPHORE_ID( 2 ), STATUS );
1107      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
1108         STATUS,
1109         RTEMS.NOT_OWNER_OF_RESOURCE,
1110         "SEMAPHORE_RELEASE AND NOT OWNER"
1111      );
1112      TEXT_IO.PUT_LINE( 
1113         "TA1 - semaphore_release - NOT_OWNER_OF_RESOURCE"
1114      );
1115
1116      RTEMS.SEMAPHORE_RELEASE( 100, STATUS );
1117      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
1118         STATUS,
1119         RTEMS.INVALID_ID,
1120         "SEMAPHORE_RELEASE WITH ILLEGAL ID"
1121      );
1122      TEXT_IO.PUT_LINE( "TA1 - semaphore_release - INVALID_ID" );
1123
1124      TEXT_IO.PUT_LINE(
1125         "TA1 - task_start - start TA2 - SUCCESSFUL"
1126     );
1127      RTEMS.TASK_START(
1128         SPTEST.TASK_ID( 2 ),
1129         SPTEST.TASK_2'ACCESS,
1130         0,
1131         STATUS
1132      );
1133      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_START OF TA2" );
1134
1135      TEXT_IO.PUT_LINE( 
1136         "TA1 - task_wake_after - yield processor - SUCCESSFUL"
1137      );
1138      RTEMS.TASK_WAKE_AFTER( RTEMS.YIELD_PROCESSOR, STATUS );
1139      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_WAKE_AFTER (yield)" );
1140
1141      TEXT_IO.PUT_LINE( 
1142         "TA1 - semaphore_delete - delete sem 1 - SUCCESSFUL"
1143      );
1144      RTEMS.SEMAPHORE_DELETE( SPTEST.SEMAPHORE_ID( 1 ), STATUS );
1145      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "SEMAPHORE_DELETE OF SM1" );
1146
1147      TEXT_IO.PUT_LINE( "TA1 - semaphore_obtain - binary semaphore" );
1148      RTEMS.SEMAPHORE_OBTAIN(
1149         SPTEST.SEMAPHORE_ID( 2 ),
1150         RTEMS.NO_WAIT,
1151         RTEMS.NO_TIMEOUT,
1152         STATUS
1153      );
1154      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "SEMAPHORE_OBTAIN" );
1155
1156      TEXT_IO.PUT_LINE( 
1157         "TA1 - semaphore_delete - delete sem 2 - RESOURCE_IN_USE"
1158      );
1159      RTEMS.SEMAPHORE_DELETE( SPTEST.SEMAPHORE_ID( 2 ), STATUS );
1160      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS( 
1161         STATUS, 
1162         RTEMS.RESOURCE_IN_USE,
1163         "SEMAPHORE_DELETE OF SM2" 
1164      );
1165
1166      TEXT_IO.PUT_LINE( 
1167         "TA1 - task_wake_after - yield processor - SUCCESSFUL"
1168      );
1169      RTEMS.TASK_WAKE_AFTER( RTEMS.YIELD_PROCESSOR, STATUS );
1170      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_WAKE_AFTER (yield)" );
1171
1172      RTEMS.TASK_DELETE( SPTEST.TASK_ID( 2 ), STATUS );
1173      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
1174         STATUS,
1175         RTEMS.INVALID_ID,
1176         "TASK_DELETE AFTER THE TASK HAS BEEN DELETED"
1177      );
1178      TEXT_IO.PUT_LINE( 
1179         "TA1 - task_delete TA2 - already deleted INVALID_ID"
1180      );
1181
1182   end SCREEN_6;
1183
1184--PAGE
1185--
1186--  SCREEN_7
1187--
1188
1189   procedure SCREEN_7
1190   is
1191      BUFFER         : RTEMS.BUFFER;
1192      BUFFER_POINTER : RTEMS.BUFFER_POINTER;
1193      COUNT          : RTEMS.UNSIGNED32;
1194      STATUS         : RTEMS.STATUS_CODES;
1195   begin
1196
1197      RTEMS.MESSAGE_QUEUE_BROADCAST(
1198         100,
1199         BUFFER_POINTER,
1200         COUNT,
1201         STATUS
1202      );
1203      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
1204         STATUS,
1205         RTEMS.INVALID_ID,
1206         "MESSAGE_QUEUE_BROADCAST WITH ILLEGAL ID"
1207      );
1208      TEXT_IO.PUT_LINE(
1209         "TA1 - message_queue_broadcast - INVALID_ID"
1210      );
1211
1212      BUFFER_POINTER := RTEMS.TO_BUFFER_POINTER( BUFFER'ADDRESS );
1213
1214      RTEMS.MESSAGE_QUEUE_CREATE(
1215         0,
1216         3,
1217         RTEMS.DEFAULT_ATTRIBUTES,
1218         SPTEST.JUNK_ID,
1219         STATUS
1220      );
1221      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
1222         STATUS,
1223         RTEMS.INVALID_NAME,
1224         "MESSAGE_QUEUE_CREATE WITH ILLEGAL NAME"
1225      );
1226      TEXT_IO.PUT_LINE(
1227         "TA1 - message_queue_create - Q 1 - INVALID_NAME"
1228      );
1229
1230      RTEMS.MESSAGE_QUEUE_CREATE(
1231         SPTEST.QUEUE_NAME( 1 ),
1232         1,
1233         RTEMS.GLOBAL,
1234         SPTEST.JUNK_ID,
1235         STATUS
1236      );
1237      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
1238         STATUS,
1239         RTEMS.MP_NOT_CONFIGURED,
1240         "MESSAGE_QUEUE_CREATE OF MP NOT CONFIGURED"
1241      );
1242      TEXT_IO.PUT_LINE(
1243             "TA1 - message_queue_create - Q 1 - MP_NOT_CONFIGURED");
1244
1245      RTEMS.MESSAGE_QUEUE_CREATE(
1246         SPTEST.QUEUE_NAME( 1 ),
1247         2,
1248         RTEMS.LIMIT,
1249         SPTEST.QUEUE_ID( 1 ),
1250         STATUS
1251      );
1252      TEST_SUPPORT.DIRECTIVE_FAILED(
1253         STATUS,
1254         "MESSAGE_QUEUE_CREATE SUCCESSFUL"
1255      );
1256      TEXT_IO.PUT_LINE(
1257         "TA1 - message_queue_create - Q 1 - LIMIT - SUCCESSFUL"
1258      );
1259
1260      RTEMS.MESSAGE_QUEUE_CREATE(
1261         SPTEST.QUEUE_NAME( 2 ),
1262         1,
1263         RTEMS.DEFAULT_ATTRIBUTES,
1264         SPTEST.JUNK_ID,
1265         STATUS
1266      );
1267      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
1268         STATUS,
1269         RTEMS.TOO_MANY,
1270         "MESSAGE_QUEUE_CREATE OF TOO MANY"
1271      );
1272      TEXT_IO.PUT_LINE(
1273         "TA1 - message_queue_create - Q 2 - TOO_MANY"
1274      );
1275
1276      RTEMS.MESSAGE_QUEUE_DELETE( 100, STATUS );
1277      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
1278         STATUS,
1279         RTEMS.INVALID_ID,
1280         "MESSAGE_QUEUE_DELETE WITH ILLEGAL ID"
1281      );
1282      TEXT_IO.PUT_LINE(
1283         "TA1 - message_queue_delete - unknown INVALID_ID"
1284      );
1285
1286      RTEMS.MESSAGE_QUEUE_DELETE( 16#10100#, STATUS );
1287      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
1288         STATUS,
1289         RTEMS.INVALID_ID,
1290         "MESSAGE_QUEUE_DELETE WITH LOCAL ILLEGAL ID"
1291      );
1292      TEXT_IO.PUT_LINE(
1293         "TA1 - message_queue_delete - local INVALID_ID"
1294      );
1295
1296      RTEMS.MESSAGE_QUEUE_IDENT(
1297         100,
1298         RTEMS.SEARCH_ALL_NODES,
1299         SPTEST.JUNK_ID,
1300         STATUS
1301      );
1302      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
1303         STATUS,
1304         RTEMS.INVALID_NAME,
1305         "MESSAGE_QUEUE_IDENT WITH ILLEGAL NAME"
1306      );
1307      TEXT_IO.PUT_LINE( "TA1 - message_queue_ident - INVALID_NAME" );
1308
1309      RTEMS.MESSAGE_QUEUE_FLUSH( 100, COUNT, STATUS );
1310      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
1311         STATUS,
1312         RTEMS.INVALID_ID,
1313         "MESSAGE_QUEUE_FLUSH WITH ILLEGAL ID"
1314      );
1315      TEXT_IO.PUT_LINE( "TA1 - message_queue_flush - INVALID_ID" );
1316
1317      RTEMS.MESSAGE_QUEUE_RECEIVE(
1318         100,
1319         BUFFER_POINTER,
1320         RTEMS.DEFAULT_OPTIONS,
1321         RTEMS.NO_TIMEOUT,
1322         STATUS
1323      );
1324      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
1325         STATUS,
1326         RTEMS.INVALID_ID,
1327         "MESSAGE_QUEUE_RECEIVE WITH ILLEGAL ID"
1328      );
1329      TEXT_IO.PUT_LINE( "TA1 - message_queue_receive - INVALID_ID" );
1330
1331      RTEMS.MESSAGE_QUEUE_RECEIVE(
1332         SPTEST.QUEUE_ID( 1 ),
1333         BUFFER_POINTER,
1334         RTEMS.NO_WAIT,
1335         RTEMS.NO_TIMEOUT,
1336         STATUS
1337      );
1338      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
1339         STATUS,
1340         RTEMS.UNSATISFIED,
1341         "MESSAGE_QUEUE_RECEIVE UNSATISFIED"
1342      );
1343      TEXT_IO.PUT_LINE(
1344         "TA1 - message_queue_receive - Q 1 - UNSATISFIED"
1345      );
1346
1347      TEXT_IO.PUT_LINE(
1348         "TA1 - message_queue_receive - Q 1 - timeout in 3 seconds"
1349      );
1350      RTEMS.MESSAGE_QUEUE_RECEIVE(
1351         SPTEST.QUEUE_ID( 1 ),
1352         BUFFER_POINTER,
1353         RTEMS.DEFAULT_OPTIONS,
1354         3 * TEST_SUPPORT.TICKS_PER_SECOND,
1355         STATUS
1356      );
1357      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
1358         STATUS,
1359         RTEMS.TIMEOUT,
1360         "MESSAGE_QUEUE_RECEIVE 3 SECOND TIMEOUT"
1361      );
1362      TEXT_IO.PUT_LINE(
1363         "TA1 - message_queue_receive - Q 1 - woke up with TIMEOUT"
1364      );
1365
1366      RTEMS.MESSAGE_QUEUE_SEND( 100, BUFFER_POINTER, STATUS );
1367      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
1368         STATUS,
1369         RTEMS.INVALID_ID,
1370         "MESSAGE_QUEUE_SEND WITH ILLEGAL ID"
1371      );
1372      TEXT_IO.PUT_LINE( "TA1 - message_queue_send - INVALID_ID" );
1373
1374      RTEMS.MESSAGE_QUEUE_SEND(
1375         SPTEST.QUEUE_ID( 1 ),
1376         BUFFER_POINTER,
1377         STATUS
1378      );
1379      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "MESSAGE_QUEUE_SEND" );
1380      TEXT_IO.PUT_LINE(
1381         "TA1 - message_queue_send - BUFFER 1 TO Q 1 - SUCCESSFUL"
1382      );
1383
1384      RTEMS.MESSAGE_QUEUE_SEND(
1385         SPTEST.QUEUE_ID( 1 ),
1386         BUFFER_POINTER,
1387         STATUS
1388      );
1389      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "MESSAGE_QUEUE_SEND" );
1390      TEXT_IO.PUT_LINE(
1391         "TA1 - message_queue_send - BUFFER 2 TO Q 1 - SUCCESSFUL"
1392      );
1393
1394      RTEMS.MESSAGE_QUEUE_SEND(
1395         SPTEST.QUEUE_ID( 1 ),
1396         BUFFER_POINTER,
1397         STATUS
1398      );
1399      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
1400         STATUS,
1401         RTEMS.TOO_MANY,
1402         "MESSAGE_QUEUE_SEND TOO MANY TO LIMITED QUEUE"
1403      );
1404      TEXT_IO.PUT_LINE(
1405         "TA1 - message_queue_send - BUFFER 3 TO Q 1 - TOO_MANY"
1406      );
1407
1408   end SCREEN_7;
1409
1410--PAGE
1411--
1412--  SCREEN_8
1413--
1414
1415   procedure SCREEN_8
1416   is
1417      BUFFER         : RTEMS.BUFFER;
1418      BUFFER_POINTER : RTEMS.BUFFER_POINTER;
1419      STATUS         : RTEMS.STATUS_CODES;
1420   begin
1421
1422      BUFFER_POINTER := RTEMS.TO_BUFFER_POINTER( BUFFER'ADDRESS );
1423
1424      RTEMS.MESSAGE_QUEUE_DELETE( SPTEST.QUEUE_ID( 1 ), STATUS );
1425      TEST_SUPPORT.DIRECTIVE_FAILED(
1426         STATUS,
1427         "MESSAGE_QUEUE_DELETE SUCCESSFUL"
1428      );
1429      TEXT_IO.PUT_LINE(
1430         "TA1 - message_queue_delete - Q 1 - SUCCESSFUL"
1431      );
1432
1433      RTEMS.MESSAGE_QUEUE_CREATE(
1434         SPTEST.QUEUE_NAME( 1 ),
1435         2,
1436         RTEMS.LIMIT,
1437         SPTEST.QUEUE_ID( 1 ),
1438         STATUS
1439      );
1440      TEST_SUPPORT.DIRECTIVE_FAILED(
1441         STATUS,
1442         "MESSAGE_QUEUE_CREATE SUCCESSFUL"
1443      );
1444      TEXT_IO.PUT_LINE(
1445         "TA1 - message_queue_create - Q 1 - LIMIT - SUCCESSFUL"
1446      );
1447
1448      RTEMS.MESSAGE_QUEUE_SEND(
1449         SPTEST.QUEUE_ID( 1 ),
1450         BUFFER_POINTER,
1451         STATUS
1452      );
1453      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "MESSAGE_QUEUE_SEND" );
1454      TEXT_IO.PUT_LINE(
1455         "TA1 - message_queue_send - BUFFER 1 TO Q 1 - SUCCESSFUL"
1456      );
1457
1458      RTEMS.MESSAGE_QUEUE_SEND(
1459         SPTEST.QUEUE_ID( 1 ),
1460         BUFFER_POINTER,
1461         STATUS
1462      );
1463      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "MESSAGE_QUEUE_SEND" );
1464      TEXT_IO.PUT_LINE(
1465         "TA1 - message_queue_send - BUFFER 2 TO Q 1 - SUCCESSFUL"
1466      );
1467
1468      RTEMS.MESSAGE_QUEUE_SEND(
1469         SPTEST.QUEUE_ID( 1 ),
1470         BUFFER_POINTER,
1471         STATUS
1472      );
1473      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
1474         STATUS,
1475         RTEMS.TOO_MANY,
1476         "MESSAGE_QUEUE_SEND TOO MANY TO LIMITED QUEUE"
1477      );
1478      TEXT_IO.PUT_LINE(
1479         "TA1 - message_queue_send - BUFFER 3 TO Q 1 - TOO_MANY"
1480      );
1481
1482      RTEMS.MESSAGE_QUEUE_DELETE( SPTEST.QUEUE_ID( 1 ), STATUS );
1483      TEST_SUPPORT.DIRECTIVE_FAILED(
1484         STATUS,
1485         "MESSAGE_QUEUE_DELETE SUCCESSFUL"
1486      );
1487      TEXT_IO.PUT_LINE(
1488         "TA1 - message_queue_delete - Q 1 - SUCCESSFUL"
1489      );
1490
1491      RTEMS.MESSAGE_QUEUE_CREATE(
1492         SPTEST.QUEUE_NAME( 1 ),
1493         3,
1494         RTEMS.LIMIT,
1495         SPTEST.QUEUE_ID( 1 ),
1496         STATUS
1497      );
1498      TEST_SUPPORT.DIRECTIVE_FAILED(
1499         STATUS,
1500         "MESSAGE_QUEUE_CREATE SUCCESSFUL"
1501      );
1502      TEXT_IO.PUT_LINE(
1503         "TA1 - message_queue_create - Q 1 - LIMIT - SUCCESSFUL"
1504      );
1505
1506      RTEMS.MESSAGE_QUEUE_SEND(
1507         SPTEST.QUEUE_ID( 1 ),
1508         BUFFER_POINTER,
1509         STATUS
1510      );
1511      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "MESSAGE_QUEUE_SEND" );
1512      TEXT_IO.PUT_LINE(
1513         "TA1 - message_queue_send - BUFFER 1 TO Q 1 - SUCCESSFUL"
1514      );
1515
1516      RTEMS.MESSAGE_QUEUE_SEND(
1517         SPTEST.QUEUE_ID( 1 ),
1518         BUFFER_POINTER,
1519         STATUS
1520      );
1521      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "MESSAGE_QUEUE_SEND" );
1522      TEXT_IO.PUT_LINE(
1523         "TA1 - message_queue_send - BUFFER 2 TO Q 1 - SUCCESSFUL"
1524      );
1525
1526      RTEMS.MESSAGE_QUEUE_SEND(
1527         SPTEST.QUEUE_ID( 1 ),
1528         BUFFER_POINTER,
1529         STATUS
1530      );
1531      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
1532         STATUS,
1533         RTEMS.UNSATISFIED,
1534         "MESSAGE_QUEUE_SEND TOO MANY TO LIMITED QUEUE"
1535      );
1536      TEXT_IO.PUT_LINE(
1537         "TA1 - message_queue_send - BUFFER 3 TO Q 1 - UNSATISFIED"
1538      );
1539
1540      RTEMS.MESSAGE_QUEUE_DELETE( SPTEST.QUEUE_ID( 1 ), STATUS );
1541      TEST_SUPPORT.DIRECTIVE_FAILED(
1542         STATUS,
1543         "MESSAGE_QUEUE_DELETE SUCCESSFUL"
1544      );
1545      TEXT_IO.PUT_LINE(
1546         "TA1 - message_queue_delete - Q 1 - SUCCESSFUL"
1547      );
1548
1549      RTEMS.MESSAGE_QUEUE_CREATE(
1550         SPTEST.QUEUE_NAME( 1 ),
1551         2,
1552         RTEMS.LIMIT,
1553         SPTEST.QUEUE_ID( 1 ),
1554         STATUS
1555      );
1556      TEST_SUPPORT.DIRECTIVE_FAILED(
1557         STATUS,
1558         "MESSAGE_QUEUE_CREATE SUCCESSFUL"
1559      );
1560      TEXT_IO.PUT_LINE(
1561         "TA1 - message_queue_create - Q 1 - LIMIT - SUCCESSFUL"
1562      );
1563
1564      TEXT_IO.PUT_LINE( 
1565         "TA1 - task_start - start TA3 - SUCCESSFUL"
1566      );
1567      RTEMS.TASK_START(
1568         SPTEST.TASK_ID( 3 ),
1569         SPTEST.TASK_3'ACCESS,
1570         0,
1571         STATUS
1572      );
1573      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_START OF TA3" );
1574
1575      TEXT_IO.PUT_LINE( 
1576         "TA1 - task_wake_after - yield processor - SUCCESSFUL"
1577      );
1578      RTEMS.TASK_WAKE_AFTER( RTEMS.YIELD_PROCESSOR, STATUS );
1579      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_WAKE_AFTER (yield)" );
1580
1581      RTEMS.MESSAGE_QUEUE_DELETE( SPTEST.QUEUE_ID( 1 ), STATUS );
1582      TEST_SUPPORT.DIRECTIVE_FAILED(
1583         STATUS,
1584         "MESSAGE_QUEUE_DELETE SUCCESSFUL"
1585      );
1586      TEXT_IO.PUT_LINE(
1587         "TA1 - message_queue_delete - delete Q 1 - SUCCESSFUL"
1588      );
1589
1590      TEXT_IO.PUT_LINE( 
1591         "TA1 - task_wake_after - yield processor - SUCCESSFUL"
1592      );
1593      RTEMS.TASK_WAKE_AFTER( RTEMS.YIELD_PROCESSOR, STATUS );
1594      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_WAKE_AFTER (yield)" );
1595
1596   end SCREEN_8;
1597
1598--PAGE
1599--
1600--  SCREEN_9
1601--
1602
1603   procedure SCREEN_9
1604   is
1605      CONVERTED           : RTEMS.ADDRESS;
1606      STATUS              : RTEMS.STATUS_CODES;
1607      OLD_SERVICE_ROUTINE : RTEMS.ADDRESS;
1608   begin
1609
1610--      RTEMS.INTERRUPT_CATCH(
1611--         SPTEST.SERVICE_ROUTINE'ACCESS,
1612--         500,
1613--         OLD_SERVICE_ROUTINE,
1614--         STATUS
1615--      );
1616--      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
1617--         STATUS,
1618--         RTEMS.INVALID_NUMBER,
1619--         "INTERRUPT_CATCH WITH INVALID VECTOR"
1620--      );
1621--      TEXT_IO.PUT_LINE( "TA1 - interrupt_catch - INVALID_NUMBER" );
1622      TEXT_IO.PUT_LINE(
1623         "TA1 - interrupt_catch - INVALID_NUMBER -- constraint error"
1624      );
1625
1626      RTEMS.INTERRUPT_CATCH( 
1627         RTEMS.NULL_ADDRESS,
1628         3,
1629         OLD_SERVICE_ROUTINE,
1630         STATUS
1631      );
1632      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
1633         STATUS,
1634         RTEMS.INVALID_ADDRESS,
1635         "INTERRUPT_CATCH WITH INVALID HANDLER"
1636      );
1637      TEXT_IO.PUT_LINE( "TA1 - interrupt_catch - INVALID_ADDRESS" );
1638
1639      RTEMS.SIGNAL_SEND( 100, RTEMS.SIGNAL_1, STATUS );
1640      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
1641         STATUS,
1642         RTEMS.INVALID_ID,
1643         "SIGNAL_SEND WITH ILLEGAL ID"
1644      );
1645      TEXT_IO.PUT_LINE( "TA1 - signal_send - INVALID_ID" );
1646
1647      RTEMS.SIGNAL_SEND( RTEMS.SELF, RTEMS.SIGNAL_16, STATUS );
1648      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
1649         STATUS,
1650         RTEMS.NOT_DEFINED,
1651         "SIGNAL_SEND WITH NO HANDLER"
1652      );
1653      TEXT_IO.PUT_LINE( "TA1 - signal_send - NOT_DEFINED" );
1654
1655      RTEMS.PORT_CREATE(
1656         0,
1657         SPTEST.INTERNAL_PORT_AREA'ADDRESS,
1658         SPTEST.EXTERNAL_PORT_AREA'ADDRESS,
1659         SPTEST.INTERNAL_PORT_AREA'LENGTH,
1660         SPTEST.JUNK_ID,
1661         STATUS
1662      );
1663      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
1664         STATUS,
1665         RTEMS.INVALID_NAME,
1666         "PORT_CREATE WITH ILLEGAL NAME"
1667      );
1668      TEXT_IO.PUT_LINE( "TA1 - port_create - INVALID_NAME" );
1669
1670      RTEMS.PORT_CREATE(
1671         SPTEST.PORT_NAME( 1 ),
1672         SPTEST.INTERNAL_PORT_AREA( 1 )'ADDRESS,
1673         SPTEST.EXTERNAL_PORT_AREA'ADDRESS,
1674         SPTEST.INTERNAL_PORT_AREA'LENGTH,
1675         SPTEST.JUNK_ID,
1676         STATUS
1677      );
1678      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
1679         STATUS,
1680         RTEMS.INVALID_ADDRESS,
1681         "PORT_CREATE WITH ILLEGAL ADDRESS"
1682      );
1683      TEXT_IO.PUT_LINE( "TA1 - port_create - INVALID_ADDRESS" );
1684
1685      RTEMS.PORT_CREATE(
1686         SPTEST.PORT_NAME( 1 ),
1687         SPTEST.INTERNAL_PORT_AREA'ADDRESS,
1688         SPTEST.EXTERNAL_PORT_AREA'ADDRESS,
1689         SPTEST.INTERNAL_PORT_AREA'LENGTH,
1690         SPTEST.JUNK_ID,
1691         STATUS
1692      );
1693      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
1694         STATUS,
1695         RTEMS.TOO_MANY,
1696         "PORT_CREATE OF TOO MANY"
1697      );
1698      TEXT_IO.PUT_LINE( "TA1 - port_create - TOO_MANY" );
1699
1700      RTEMS.PORT_DELETE( 0, STATUS );
1701      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
1702         STATUS,
1703         RTEMS.INVALID_ID,
1704         "PORT_DELETE WITH ILLEGAL ID"
1705      );
1706      TEXT_IO.PUT_LINE( "TA1 - port_delete - INVALID_ID" );
1707
1708      RTEMS.PORT_IDENT( 0, SPTEST.JUNK_ID, STATUS );
1709      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
1710         STATUS,
1711         RTEMS.INVALID_NAME,
1712         "PORT_IDENT WITH ILLEGAL NAME"
1713      );
1714      TEXT_IO.PUT_LINE( "TA1 - port_ident - INVALID_NAME" );
1715
1716      RTEMS.PORT_INTERNAL_TO_EXTERNAL(
1717         100,
1718         SPTEST.INTERNAL_PORT_AREA'ADDRESS,
1719         CONVERTED,
1720         STATUS
1721      );
1722      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
1723         STATUS,
1724         RTEMS.INVALID_ID,
1725         "PORT_INTERNAL_TO_EXTERNAL WITH ILLEGAL ID"
1726      );
1727      TEXT_IO.PUT_LINE(
1728         "TA1 - port_internal_to_external - INVALID_ID"
1729      );
1730
1731      RTEMS.PORT_EXTERNAL_TO_INTERNAL(
1732         100,
1733         SPTEST.EXTERNAL_PORT_AREA'ADDRESS,
1734         CONVERTED,
1735         STATUS
1736      );
1737      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
1738         STATUS,
1739         RTEMS.INVALID_ID,
1740         "PORT_EXTERNAL_TO_INTERNAL WITH ILLEGAL ID"
1741      );
1742      TEXT_IO.PUT_LINE(
1743         "TA1 - port_external_to_internal - INVALID_ID"
1744      );
1745
1746   end SCREEN_9;
1747
1748--PAGE
1749--
1750--  SCREEN_10
1751--
1752
1753   procedure SCREEN_10
1754   is
1755      STATUS : RTEMS.STATUS_CODES;
1756   begin
1757
1758      RTEMS.RATE_MONOTONIC_CREATE( 0, SPTEST.JUNK_ID, STATUS );
1759      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
1760         STATUS,
1761         RTEMS.INVALID_NAME,
1762         "RATE_MONOTONIC_CREATE WITH ILLEGAL NAME"
1763      );
1764      TEXT_IO.PUT_LINE(
1765         "TA1 - rate_monotonic_create - INVALID_NAME"
1766      );
1767
1768      RTEMS.RATE_MONOTONIC_CREATE(
1769         SPTEST.PERIOD_NAME( 1 ),
1770         SPTEST.PERIOD_ID( 1 ),
1771         STATUS
1772      );
1773      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "RATE_MONOTONIC_CREATE" );
1774      TEXT_IO.PUT_LINE(
1775         "TA1 - rate_monotonic_create - SUCCESSFUL"
1776      );
1777
1778      RTEMS.RATE_MONOTONIC_CREATE(
1779         SPTEST.PERIOD_NAME( 1 ),
1780         SPTEST.JUNK_ID,
1781         STATUS
1782      );
1783      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
1784         STATUS,
1785         RTEMS.TOO_MANY,
1786         "RATE_MONOTONIC_CREATE FOR TOO MANY"
1787      );
1788      TEXT_IO.PUT_LINE( "TA1 - rate_monotonic_create - TOO_MANY" );
1789
1790      RTEMS.RATE_MONOTONIC_IDENT( 0, SPTEST.JUNK_ID, STATUS );
1791      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
1792         STATUS,
1793         RTEMS.INVALID_NAME,
1794         "RATE_MONOTONIC_IDENT WITH ILLEGAL NAME"
1795      );
1796      TEXT_IO.PUT_LINE(
1797         "TA1 - rate_monotonic_ident - INVALID_NAME"
1798      );
1799
1800      RTEMS.RATE_MONOTONIC_PERIOD( 100, 5, STATUS );
1801      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
1802         STATUS,
1803         RTEMS.INVALID_ID,
1804         "RATE_MONOTONIC_PERIOD WITH ILLEGAL ID"
1805      );
1806      TEXT_IO.PUT_LINE(
1807         "TA1 - rate_monotonic_period - unknown INVALID_ID"
1808      );
1809
1810      RTEMS.RATE_MONOTONIC_PERIOD( 16#10100#, 5, STATUS );
1811      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
1812         STATUS,
1813         RTEMS.INVALID_ID,
1814         "RATE_MONOTONIC_PERIOD WITH ILLEGAL ID"
1815      );
1816      TEXT_IO.PUT_LINE(
1817         "TA1 - rate_monotonic_period - local INVALID_ID"
1818      );
1819
1820      RTEMS.RATE_MONOTONIC_PERIOD(
1821         SPTEST.PERIOD_ID( 1 ),
1822         RTEMS.PERIOD_STATUS,
1823         STATUS
1824      );
1825      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
1826         STATUS,
1827         RTEMS.NOT_DEFINED,
1828         "RATE_MONOTONIC_PERIOD STATUS NOT DEFINED"
1829      );
1830      TEXT_IO.PUT_LINE( 
1831         "TA1 - rate_monotonic_period( STATUS ) - NOT_DEFINED"
1832      );
1833
1834      RTEMS.RATE_MONOTONIC_PERIOD( SPTEST.PERIOD_ID( 1 ), 100, STATUS );
1835      TEST_SUPPORT.DIRECTIVE_FAILED(
1836         STATUS,
1837         "RATE_MONOTONIC_PERIOD 100 TICKS"
1838      );
1839      TEXT_IO.PUT( "TA1 - rate_monotonic_period - 100 ticks - " );
1840      TEXT_IO.PUT_LINE( "SUCCESSFUL" );
1841
1842      RTEMS.RATE_MONOTONIC_PERIOD(
1843         SPTEST.PERIOD_ID( 1 ),
1844         RTEMS.PERIOD_STATUS,
1845         STATUS
1846      );
1847      TEST_SUPPORT.DIRECTIVE_FAILED(
1848         STATUS,
1849         "RATE_MONOTONIC_PERIOD STATUS"
1850      );
1851      TEXT_IO.PUT( "TA1 - rate_monotonic_period( STATUS ) - " );
1852      TEXT_IO.PUT_LINE( "SUCCESSFUL" );
1853
1854      loop
1855
1856         RTEMS.RATE_MONOTONIC_PERIOD(
1857            SPTEST.PERIOD_ID( 1 ),
1858            RTEMS.PERIOD_STATUS,
1859            STATUS
1860         );
1861
1862         exit when RTEMS.ARE_STATUSES_EQUAL( STATUS, RTEMS.TIMEOUT );
1863
1864         TEST_SUPPORT.DIRECTIVE_FAILED(
1865            STATUS,
1866            "RATE_MONOTONIC_PERIOD STATUS WAITING FOR TIMEOUT"
1867         );
1868 
1869      end loop;
1870      TEXT_IO.PUT( "TA1 - rate_monotonic_period( STATUS ) - " );
1871      TEXT_IO.PUT_LINE( "TIMEOUT" );
1872
1873      RTEMS.RATE_MONOTONIC_CANCEL( 100, STATUS );
1874      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
1875         STATUS,
1876         RTEMS.INVALID_ID,
1877         "RATE_MONOTONIC_CANCEL WITH ILLEGAL ID"
1878      );
1879      TEXT_IO.PUT_LINE(
1880         "TA1 - rate_monotonic_cancel - unknown INVALID_ID"
1881      );
1882
1883      RTEMS.RATE_MONOTONIC_CANCEL( 16#10100#, STATUS );
1884      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
1885         STATUS,
1886         RTEMS.INVALID_ID,
1887         "RATE_MONOTONIC_CANCEL WITH ILLEGAL ID"
1888      );
1889      TEXT_IO.PUT_LINE(
1890         "TA1 - rate_monotonic_cancel - local INVALID_ID"
1891      );
1892
1893      RTEMS.RATE_MONOTONIC_CANCEL( SPTEST.PERIOD_ID( 1 ), STATUS );
1894      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "RATE_MONOTONIC_CANCEL" );
1895      TEXT_IO.PUT_LINE( "TA1 - rate_monotonic_cancel - SUCCESSFUL" );
1896
1897      RTEMS.RATE_MONOTONIC_PERIOD( SPTEST.PERIOD_ID( 1 ), 5, STATUS );
1898      TEST_SUPPORT.DIRECTIVE_FAILED(
1899         STATUS,
1900         "RATE_MONOTONIC_PERIOD RESTART"
1901      );
1902
1903      RTEMS.TASK_WAKE_AFTER( TEST_SUPPORT.TICKS_PER_SECOND, STATUS );
1904      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_WAKE_AFTER" );
1905
1906      RTEMS.RATE_MONOTONIC_PERIOD( SPTEST.PERIOD_ID( 1 ), 5, STATUS );
1907      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
1908         STATUS,
1909         RTEMS.TIMEOUT,
1910         "RATE_MONOTONIC_PERIOD TIMED OUT"
1911      );
1912      TEXT_IO.PUT_LINE( 
1913         "TA1 - rate_monotonic_period - 5 ticks - TIMEOUT" 
1914      );
1915
1916      RTEMS.TASK_START(
1917         SPTEST.TASK_ID( 4 ),
1918         SPTEST.TASK_4'ACCESS,
1919         0,
1920         STATUS
1921      );
1922      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_START OF TA4" );
1923
1924      TEXT_IO.PUT_LINE( "TA1 - task_wake_after - yielding to TA4" );
1925      RTEMS.TASK_WAKE_AFTER( RTEMS.YIELD_PROCESSOR, STATUS );
1926      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_WAKE_AFTER (yield)" );
1927
1928      RTEMS.RATE_MONOTONIC_DELETE( 100, STATUS );
1929      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
1930         STATUS,
1931         RTEMS.INVALID_ID,
1932         "RATE_MONOTONIC_DELETE WITH ILLEGAL ID"
1933      );
1934      TEXT_IO.PUT_LINE(
1935         "TA1 - rate_monotonic_delete - unknown INVALID_ID"
1936      );
1937
1938      RTEMS.RATE_MONOTONIC_DELETE( 16#10100#, STATUS );
1939      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
1940         STATUS,
1941         RTEMS.INVALID_ID,
1942         "RATE_MONOTONIC_DELETE WITH ILLEGAL ID"
1943      );
1944      TEXT_IO.PUT_LINE(
1945         "TA1 - rate_monotonic_delete - local INVALID_ID"
1946      );
1947
1948      RTEMS.RATE_MONOTONIC_DELETE( SPTEST.PERIOD_ID( 1 ), STATUS );
1949      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "RATE_MONOTONIC_DELETE" );
1950      TEXT_IO.PUT_LINE(
1951         "TA1 - rate_monotonic_delete - SUCCESSFUL"
1952      );
1953
1954   end SCREEN_10;
1955
1956--PAGE
1957--
1958--  SCREEN_11
1959--
1960
1961   procedure SCREEN_11
1962   is
1963      BUFFER_ADDRESS_1 : RTEMS.ADDRESS;
1964      BUFFER_ADDRESS_2 : RTEMS.ADDRESS;
1965      BUFFER_ADDRESS_3 : RTEMS.ADDRESS;
1966      STATUS           : RTEMS.STATUS_CODES;
1967   begin
1968
1969      RTEMS.PARTITION_CREATE(
1970         0,
1971         SPTEST.PARTITION_GOOD_AREA'ADDRESS,
1972         128,
1973         40,
1974         RTEMS.DEFAULT_ATTRIBUTES,
1975         SPTEST.JUNK_ID,
1976         STATUS
1977      );
1978      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
1979         STATUS,
1980         RTEMS.INVALID_NAME,
1981         "PARTITION_CREATE WITH ILLEGAL NAME"
1982      );
1983      TEXT_IO.PUT_LINE( "TA1 - partition_create - INVALID_NAME" );
1984
1985      RTEMS.PARTITION_CREATE(
1986         SPTEST.PARTITION_NAME( 1 ),
1987         SPTEST.PARTITION_GOOD_AREA'ADDRESS,
1988         0,
1989         80,
1990         RTEMS.DEFAULT_ATTRIBUTES,
1991         SPTEST.JUNK_ID,
1992         STATUS
1993      );
1994      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
1995         STATUS,
1996         RTEMS.INVALID_SIZE,
1997         "PARTITION_CREATE WITH ILLEGAL LENGTH"
1998      );
1999      TEXT_IO.PUT_LINE(
2000         "TA1 - partition_create - length - INVALID_SIZE"
2001      );
2002
2003      RTEMS.PARTITION_CREATE(
2004         SPTEST.PARTITION_NAME( 1 ),
2005         SPTEST.PARTITION_GOOD_AREA'ADDRESS,
2006         128,
2007         0,
2008         RTEMS.DEFAULT_ATTRIBUTES,
2009         SPTEST.JUNK_ID,
2010         STATUS
2011      );
2012      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
2013         STATUS,
2014         RTEMS.INVALID_SIZE,
2015         "PARTITION_CREATE WITH ILLEGAL BUFFER_SIZE"
2016      );
2017      TEXT_IO.PUT_LINE( 
2018         "TA1 - partition_create - buffer size - INVALID_SIZE" 
2019      );
2020
2021      RTEMS.PARTITION_CREATE(
2022         SPTEST.PARTITION_NAME( 1 ),
2023         SPTEST.PARTITION_GOOD_AREA'ADDRESS,
2024         128,
2025         256,
2026         RTEMS.DEFAULT_ATTRIBUTES,
2027         SPTEST.JUNK_ID,
2028         STATUS
2029      );
2030      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
2031         STATUS,
2032         RTEMS.INVALID_SIZE,
2033         "PARTITION_CREATE WITH BUFFER_SIZE > LENGTH"
2034      );
2035      TEXT_IO.PUT_LINE( 
2036       "TA1 - partition_create - length < buffer size - INVALID_SIZE"
2037      );
2038
2039      RTEMS.PARTITION_CREATE(
2040         SPTEST.PARTITION_NAME( 1 ),
2041         SPTEST.PARTITION_GOOD_AREA'ADDRESS,
2042         128,
2043         64,
2044         RTEMS.GLOBAL,
2045         SPTEST.JUNK_ID,
2046         STATUS
2047      );
2048      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
2049         STATUS,
2050         RTEMS.MP_NOT_CONFIGURED,
2051         "PARTITION_CREATE OF GLOBAL"
2052      );
2053      TEXT_IO.PUT_LINE("TA1 - partition_create - MP_NOT_CONFIGURED");
2054
2055      RTEMS.PARTITION_CREATE(
2056         SPTEST.PARTITION_NAME( 1 ),
2057         SPTEST.PARTITION_BAD_AREA'ADDRESS,
2058         128,
2059         64,
2060         RTEMS.DEFAULT_ATTRIBUTES,
2061         SPTEST.JUNK_ID,
2062         STATUS
2063      );
2064      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
2065         STATUS,
2066         RTEMS.INVALID_ADDRESS,
2067         "PARTITION_CREATE WITH BAD ADDRESS"
2068      );
2069      TEXT_IO.PUT_LINE( "TA1 - partition_create - INVALID_ADDRESS" );
2070
2071      RTEMS.PARTITION_CREATE(
2072         SPTEST.PARTITION_NAME( 1 ),
2073         SPTEST.PARTITION_GOOD_AREA'ADDRESS,
2074         128,
2075         34,
2076         RTEMS.DEFAULT_ATTRIBUTES,
2077         SPTEST.JUNK_ID,
2078         STATUS
2079      );
2080      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
2081         STATUS,
2082         RTEMS.INVALID_SIZE,
2083         "PARTITION_CREATE WITH UNALIGNED BUFFER_SIZE"
2084      );
2085      TEXT_IO.PUT_LINE( "TA1 - partition_create - INVALID_SIZE" );
2086
2087      RTEMS.PARTITION_DELETE( 100, STATUS );
2088      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
2089         STATUS,
2090         RTEMS.INVALID_ID,
2091         "PARTITION_DELETE WITH ILLEGAL ID"
2092      );
2093      TEXT_IO.PUT_LINE(
2094         "TA1 - partition_delete - unknown INVALID_ID"
2095      );
2096
2097      RTEMS.PARTITION_DELETE( 16#10100#, STATUS );
2098      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
2099         STATUS,
2100         RTEMS.INVALID_ID,
2101         "PARTITION_DELETE WITH ILLEGAL ID"
2102      );
2103      TEXT_IO.PUT_LINE(
2104         "TA1 - partition_delete - local INVALID_ID"
2105      );
2106
2107      RTEMS.PARTITION_GET_BUFFER( 100, BUFFER_ADDRESS_1, STATUS );
2108      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
2109         STATUS,
2110         RTEMS.INVALID_ID,
2111         "PARTITION_GET_BUFFER WITH ILLEGAL ID"
2112      );
2113      TEXT_IO.PUT_LINE( "TA1 - partition_get_buffer - INVALID_ID" );
2114
2115      RTEMS.PARTITION_IDENT(
2116         0,
2117         RTEMS.SEARCH_ALL_NODES,
2118         SPTEST.JUNK_ID,
2119         STATUS
2120      );
2121      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
2122         STATUS,
2123         RTEMS.INVALID_NAME,
2124         "PARTITION_IDENT WITH ILLEGAL NAME"
2125      );
2126      TEXT_IO.PUT_LINE( "TA1 - partition_ident - INVALID_NAME" );
2127
2128      RTEMS.PARTITION_RETURN_BUFFER( 100, BUFFER_ADDRESS_1, STATUS );
2129      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
2130         STATUS,
2131         RTEMS.INVALID_ID,
2132         "PARTITION_RETURN WITH ILLEGAL ID"
2133      );
2134      TEXT_IO.PUT_LINE(
2135         "TA1 - partition_return_buffer - INVALID_ID"
2136      );
2137
2138      RTEMS.PARTITION_CREATE(
2139         SPTEST.PARTITION_NAME( 1 ),
2140         SPTEST.PARTITION_GOOD_AREA'ADDRESS,
2141         128,
2142         64,
2143         RTEMS.DEFAULT_ATTRIBUTES,
2144         SPTEST.PARTITION_ID( 1 ),
2145         STATUS
2146      );
2147      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "PARTITION_CREATE" );
2148      TEXT_IO.PUT_LINE( "TA1 - partition_create - SUCCESSFUL" );
2149
2150      RTEMS.PARTITION_CREATE(
2151         SPTEST.PARTITION_NAME( 1 ),
2152         SPTEST.PARTITION_GOOD_AREA'ADDRESS,
2153         128,
2154         64,
2155         RTEMS.DEFAULT_ATTRIBUTES,
2156         SPTEST.JUNK_ID,
2157         STATUS
2158      );
2159      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
2160         STATUS,
2161         RTEMS.TOO_MANY,
2162         "PARTITION_CREATE OF TOO MANY"
2163      );
2164      TEXT_IO.PUT_LINE( "TA1 - partition_create - TOO_MANY" );
2165
2166      RTEMS.PARTITION_GET_BUFFER(
2167         SPTEST.PARTITION_ID( 1 ),
2168         BUFFER_ADDRESS_1,
2169         STATUS
2170      );
2171      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "PARTITION_GET_BUFFER" );
2172      TEXT_IO.PUT_LINE( "TA1 - partition_get_buffer - SUCCESSFUL" );
2173
2174      RTEMS.PARTITION_GET_BUFFER(
2175         SPTEST.PARTITION_ID( 1 ),
2176         BUFFER_ADDRESS_2,
2177         STATUS
2178      );
2179      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "PARTITION_GET_BUFFER" );
2180      TEXT_IO.PUT_LINE( "TA1 - partition_get_buffer - SUCCESSFUL" );
2181
2182      RTEMS.PARTITION_GET_BUFFER(
2183         SPTEST.PARTITION_ID( 1 ),
2184         BUFFER_ADDRESS_3,
2185         STATUS
2186      );
2187      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
2188         STATUS,
2189         RTEMS.UNSATISFIED,
2190         "PARTITION_GET_BUFFER UNSATISFIED"
2191      );
2192      TEXT_IO.PUT_LINE( "TA1 - partition_get_buffer - UNSATISFIED" );
2193
2194      RTEMS.PARTITION_DELETE(
2195         SPTEST.PARTITION_ID( 1 ),
2196         STATUS
2197      );
2198      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
2199         STATUS,
2200         RTEMS.RESOURCE_IN_USE,
2201         "PARTITION_DELETE WITH BUFFERS IN USE"
2202      );
2203      TEXT_IO.PUT_LINE( "TA1 - partition_delete - RESOURCE_IN_USE" );
2204
2205      RTEMS.PARTITION_RETURN_BUFFER(
2206         SPTEST.PARTITION_ID( 1 ),
2207         SPTEST.REGION_GOOD_AREA( 0 )'ADDRESS,  -- NOTE: REGION
2208         STATUS
2209      );
2210      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
2211         STATUS,
2212         RTEMS.INVALID_ADDRESS,
2213         "PARTITION_RETURN WITH BUFFER ADDRESS OUT OF PARTITION"
2214      );
2215      TEXT_IO.PUT( "TA1 - partition_return_buffer - " );
2216      TEXT_IO.PUT_LINE( "INVALID_ADDRESS - out of range" );
2217
2218      RTEMS.PARTITION_RETURN_BUFFER(
2219         SPTEST.PARTITION_ID( 1 ),
2220         SPTEST.PARTITION_GOOD_AREA( 7 )'ADDRESS,
2221         STATUS
2222      );
2223      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
2224         STATUS,
2225         RTEMS.INVALID_ADDRESS,
2226         "PARTITION_RETURN WITH BUFFER ADDRESS NOT ON BOUNDARY"
2227      );
2228      TEXT_IO.PUT( "TA1 - partition_return_buffer - " );
2229      TEXT_IO.PUT_LINE( "INVALID_ADDRESS - not on boundary" );
2230
2231
2232   end SCREEN_11;
2233
2234--PAGE
2235--
2236--  SCREEN_12
2237--
2238
2239   procedure SCREEN_12
2240   is
2241      SEGMENT_ADDRESS_1 : RTEMS.ADDRESS;
2242      SEGMENT_ADDRESS_2 : RTEMS.ADDRESS;
2243      SEGMENT_ADDRESS_3 : RTEMS.ADDRESS;
2244      OFFSET            : RTEMS.UNSIGNED32;
2245      GOOD_FRONT_FLAG   : RTEMS.UNSIGNED32;
2246      GOOD_BACK_FLAG    : RTEMS.UNSIGNED32;
2247      STATUS            : RTEMS.STATUS_CODES;
2248   begin
2249
2250      RTEMS.REGION_CREATE(
2251         0,
2252         SPTEST.REGION_GOOD_AREA'ADDRESS,
2253         128,
2254         32,
2255         RTEMS.DEFAULT_ATTRIBUTES,
2256         SPTEST.JUNK_ID,
2257         STATUS
2258      );
2259      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
2260         STATUS,
2261         RTEMS.INVALID_NAME,
2262         "REGION_CREATE WITH ILLEGAL NAME"
2263      );
2264      TEXT_IO.PUT_LINE( "TA1 - region_create - INVALID_NAME" );
2265
2266      RTEMS.REGION_CREATE(
2267         SPTEST.REGION_NAME( 1 ),
2268         SPTEST.REGION_BAD_AREA'ADDRESS,
2269         128,
2270         32,
2271         RTEMS.DEFAULT_ATTRIBUTES,
2272         SPTEST.JUNK_ID,
2273         STATUS
2274      );
2275      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
2276         STATUS,
2277         RTEMS.INVALID_ADDRESS,
2278         "REGION_CREATE WITH ILLEGAL ADDRESS"
2279      );
2280      TEXT_IO.PUT_LINE( "TA1 - region_create - INVALID_ADDRESS" );
2281
2282      RTEMS.REGION_CREATE(
2283         SPTEST.REGION_NAME( 1 ),
2284         SPTEST.REGION_GOOD_AREA'ADDRESS,
2285         128,
2286         34,
2287         RTEMS.DEFAULT_ATTRIBUTES,
2288         SPTEST.JUNK_ID,
2289         STATUS
2290      );
2291      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
2292         STATUS,
2293         RTEMS.INVALID_SIZE,
2294         "REGION_CREATE WITH ILLEGAL SIZE"
2295      );
2296      TEXT_IO.PUT_LINE( "TA1 - region_create - INVALID_SIZE" );
2297
2298      RTEMS.REGION_CREATE(
2299         SPTEST.REGION_NAME( 1 ),
2300         SPTEST.REGION_GOOD_AREA( SPTEST.REGION_START_OFFSET )'ADDRESS,
2301         SPTEST.REGION_LENGTH,
2302         128,
2303         RTEMS.DEFAULT_ATTRIBUTES,
2304         SPTEST.REGION_ID( 1 ),
2305         STATUS
2306      );
2307      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "REGION_CREATE" );
2308      TEXT_IO.PUT_LINE( "TA1 - region_create - SUCCESSFUL" );
2309
2310      RTEMS.REGION_CREATE(
2311         SPTEST.REGION_NAME( 1 ),
2312         SPTEST.REGION_GOOD_AREA'ADDRESS,
2313         128,
2314         32,
2315         RTEMS.DEFAULT_ATTRIBUTES,
2316         SPTEST.JUNK_ID,
2317         STATUS
2318      );
2319      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
2320         STATUS,
2321         RTEMS.TOO_MANY,
2322         "REGION_CREATE FOR TOO MANY"
2323      );
2324      TEXT_IO.PUT_LINE( "TA1 - region_create - TOO_MANY" );
2325
2326      RTEMS.REGION_DELETE( 100, STATUS );
2327      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
2328         STATUS,
2329         RTEMS.INVALID_ID,
2330         "REGION_DELETE WITH ILLEGAL ID"
2331      );
2332      TEXT_IO.PUT_LINE( "TA1 - region_delete - unknown INVALID_ID" );
2333
2334      RTEMS.REGION_DELETE( 16#10100#, STATUS );
2335      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
2336         STATUS,
2337         RTEMS.INVALID_ID,
2338         "REGION_DELETE WITH ILLEGAL ID"
2339      );
2340      TEXT_IO.PUT_LINE( "TA1 - region_delete - local INVALID_ID" );
2341
2342      RTEMS.REGION_IDENT( 0, SPTEST.JUNK_ID, STATUS );
2343      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
2344         STATUS,
2345         RTEMS.INVALID_NAME,
2346         "REGION_IDENT WITH ILLEGAL NAME"
2347      );
2348      TEXT_IO.PUT_LINE( "TA1 - region_ident - INVALID_NAME" );
2349
2350      RTEMS.REGION_GET_SEGMENT(
2351         100,
2352         128,
2353         RTEMS.DEFAULT_OPTIONS,
2354         RTEMS.NO_TIMEOUT,
2355         SEGMENT_ADDRESS_1,
2356         STATUS
2357      );
2358      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
2359         STATUS,
2360         RTEMS.INVALID_ID,
2361         "REGION_GET_SEGMENT WITH ILLEGAL ID"
2362      );
2363      TEXT_IO.PUT_LINE( "TA1 - region_get_segment - INVALID_ID" );
2364
2365      RTEMS.REGION_GET_SEGMENT(
2366         SPTEST.REGION_ID( 1 ),
2367         RTEMS.UNSIGNED32'LAST,
2368         RTEMS.DEFAULT_OPTIONS,
2369         RTEMS.NO_TIMEOUT,
2370         SEGMENT_ADDRESS_1,
2371         STATUS
2372      );
2373      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
2374         STATUS,
2375         RTEMS.INVALID_SIZE,
2376         "REGION_GET_SEGMENT WITH ILLEGAL SIZE"
2377      );
2378      TEXT_IO.PUT_LINE( "TA1 - region_get_segment - INVALID_SIZE" );
2379
2380      RTEMS.REGION_GET_SEGMENT(
2381         SPTEST.REGION_ID( 1 ),
2382         384,
2383         RTEMS.DEFAULT_OPTIONS,
2384         RTEMS.NO_TIMEOUT,
2385         SEGMENT_ADDRESS_1,
2386         STATUS
2387      );
2388      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "REGION_GET_SEGMENT" );
2389      TEXT_IO.PUT_LINE( "TA1 - region_get_segment - SUCCESSFUL" );
2390
2391      RTEMS.REGION_GET_SEGMENT(
2392         SPTEST.REGION_ID( 1 ),
2393         384,
2394         RTEMS.NO_WAIT,
2395         RTEMS.NO_TIMEOUT,
2396         SEGMENT_ADDRESS_2,
2397         STATUS
2398      );
2399      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
2400         STATUS,
2401         RTEMS.UNSATISFIED,
2402         "REGION_GET_SEGMENT UNSATISFIED"
2403      );
2404      TEXT_IO.PUT_LINE( "TA1 - region_get_segment - UNSATISFIED" );
2405
2406      TEXT_IO.PUT_LINE( "TA1 - region_get_segment - timeout in 3 seconds" );
2407      RTEMS.REGION_GET_SEGMENT(
2408         SPTEST.REGION_ID( 1 ),
2409         128,
2410         RTEMS.DEFAULT_OPTIONS,
2411         3 * TEST_SUPPORT.TICKS_PER_SECOND,
2412         SEGMENT_ADDRESS_3,
2413         STATUS
2414      );
2415      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
2416         STATUS,
2417         RTEMS.TIMEOUT,
2418         "REGION_GET_SEGMENT TIMEOUT"
2419      );
2420      TEXT_IO.PUT_LINE( 
2421         "TA1 - region_get_segment - woke up with TIMEOUT" 
2422      );
2423
2424      RTEMS.REGION_DELETE( SPTEST.REGION_ID( 1 ), STATUS );
2425      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
2426         STATUS,
2427         RTEMS.RESOURCE_IN_USE,
2428         "REGION_DELETE WITH BUFFERS IN USE"
2429      );
2430      TEXT_IO.PUT_LINE( "TA1 - region_delete - RESOURCE_IN_USE" );
2431
2432      RTEMS.REGION_RETURN_SEGMENT(
2433         100,
2434         SEGMENT_ADDRESS_1,
2435         STATUS
2436      );
2437      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
2438         STATUS,
2439         RTEMS.INVALID_ID,
2440         "REGION_RETURN_SEGMENT WITH ILLEGAL ID"
2441      );
2442      TEXT_IO.PUT_LINE( "TA1 - region_return_segment - INVALID_ID" );
2443
2444      RTEMS.REGION_RETURN_SEGMENT(
2445         SPTEST.REGION_ID( 1 ),
2446         SPTEST.REGION_GOOD_AREA'ADDRESS,
2447         STATUS
2448      );
2449      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
2450         STATUS,
2451         RTEMS.INVALID_ADDRESS,
2452         "REGION_RETURN_SEGMENT WITH ILLEGAL SEGMENT"
2453      );
2454      TEXT_IO.PUT_LINE(
2455         "TA1 - region_return_segment - INVALID_ADDRESS"
2456      );
2457
2458      -- internal heap errors, subject to change if heap code changes
2459
2460      TEXT_IO.PUT_LINE( "TA1 - debug_disable - DEBUG_REGION" );
2461      RTEMS.DEBUG_DISABLE( RTEMS.DEBUG_REGION );
2462
2463      OFFSET := RTEMS.SUBTRACT( 
2464                   SEGMENT_ADDRESS_1, 
2465                   SPTEST.REGION_GOOD_AREA'ADDRESS
2466                ) / 4;
2467
2468      -- bad FRONT_FLAG error
2469
2470      GOOD_FRONT_FLAG := SPTEST.REGION_GOOD_AREA( OFFSET - 1 );
2471      SPTEST.REGION_GOOD_AREA( OFFSET - 1 ) := GOOD_FRONT_FLAG + 2;
2472
2473      RTEMS.REGION_RETURN_SEGMENT(
2474         SPTEST.REGION_ID( 1 ),
2475         SEGMENT_ADDRESS_1,
2476         STATUS
2477      );
2478      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
2479         STATUS,
2480         RTEMS.INVALID_ADDRESS,
2481         "REGION_RETURN_SEGMENT WITH BACK_FLAG /= FRONT_FLAG"
2482      );
2483      TEXT_IO.PUT_LINE(
2484         "TA1 - region_return_segment - INVALID_ADDRESS"
2485      );
2486
2487      SPTEST.REGION_GOOD_AREA( OFFSET - 1 ) := GOOD_FRONT_FLAG;
2488
2489      -- bad BACK_FLAG error
2490
2491      GOOD_BACK_FLAG := SPTEST.REGION_GOOD_AREA( OFFSET - 2 );
2492      SPTEST.REGION_GOOD_AREA( OFFSET - 2 ) := 1024;
2493
2494      RTEMS.REGION_RETURN_SEGMENT(
2495         SPTEST.REGION_ID( 1 ),
2496         SEGMENT_ADDRESS_1,
2497         STATUS
2498      );
2499      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
2500         STATUS,
2501         RTEMS.INVALID_ADDRESS,
2502         "REGION_RETURN_SEGMENT WITH BACK_FLAG /= FRONT_FLAG"
2503      );
2504      TEXT_IO.PUT_LINE(
2505         "TA1 - region_return_segment - INVALID_ADDRESS"
2506      );
2507
2508      SPTEST.REGION_GOOD_AREA( OFFSET - 2 ) := GOOD_BACK_FLAG;
2509
2510      TEXT_IO.PUT_LINE( "TA1 - debug_enable - DEBUG_REGION" );
2511      RTEMS.DEBUG_ENABLE( RTEMS.DEBUG_REGION );
2512
2513      RTEMS.REGION_EXTEND(
2514         100,
2515         SPTEST.REGION_GOOD_AREA'ADDRESS,
2516         128,
2517         STATUS
2518      );
2519      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
2520         STATUS,
2521         RTEMS.INVALID_ID,
2522         "REGION_EXTEND WITH INVALID_ID"
2523      );
2524      TEXT_IO.PUT_LINE(
2525         "TA1 - region_extend - INVALID_ID"
2526      );
2527
2528      RTEMS.REGION_EXTEND(
2529         SPTEST.REGION_ID( 1 ),
2530         SPTEST.REGION_GOOD_AREA( SPTEST.REGION_START_OFFSET + 16 )'ADDRESS,
2531         128,
2532         STATUS
2533      );
2534      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
2535         STATUS,
2536         RTEMS.INVALID_ADDRESS,
2537         "REGION_EXTEND WITH INVALID_ADDRESS"
2538      );
2539      TEXT_IO.PUT_LINE(
2540         "TA1 - region_extend - within heap - INVALID_ADDRESS"
2541      );
2542
2543      RTEMS.REGION_EXTEND(
2544         SPTEST.REGION_ID( 1 ),
2545         SPTEST.REGION_BAD_AREA'ADDRESS,
2546         128,
2547         STATUS
2548      );
2549      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
2550         STATUS,
2551         RTEMS.NOT_IMPLEMENTED,
2552         "REGION_EXTEND WITH NOT_IMPLEMENTED"
2553      );
2554      TEXT_IO.PUT_LINE(
2555         "TA1 - region_extend - non-contiguous lower - NOT_IMPLEMENTED"
2556      );
2557
2558      RTEMS.REGION_EXTEND(
2559         SPTEST.REGION_ID( 1 ),
2560         SPTEST.REGION_GOOD_AREA( 
2561            SPTEST.REGION_START_OFFSET - SPTEST.REGION_LENGTH )'ADDRESS,
2562         128,
2563         STATUS
2564      );
2565      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
2566         STATUS,
2567         RTEMS.NOT_IMPLEMENTED,
2568         "REGION_EXTEND WITH NOT_IMPLEMENTED"
2569      );
2570      TEXT_IO.PUT_LINE(
2571         "TA1 - region_extend - contiguous lower - NOT_IMPLEMENTED"
2572      );
2573
2574      RTEMS.REGION_EXTEND(
2575         SPTEST.REGION_ID( 1 ),
2576         SPTEST.REGION_GOOD_AREA( 
2577            SPTEST.REGION_START_OFFSET + SPTEST.REGION_LENGTH + 16 )'ADDRESS,
2578         128,
2579         STATUS
2580      );
2581      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
2582         STATUS,
2583         RTEMS.NOT_IMPLEMENTED,
2584         "REGION_EXTEND WITH NOT_IMPLEMENTED"
2585      );
2586      TEXT_IO.PUT_LINE(
2587         "TA1 - region_extend - non-contiguous higher - NOT_IMPLEMENTED"
2588      );
2589
2590   end SCREEN_12;
2591
2592--PAGE
2593--
2594--  SCREEN_13
2595--
2596
2597   procedure SCREEN_13
2598   is
2599      RESULT : RTEMS.UNSIGNED32;
2600      TIME   : RTEMS.TIME_OF_DAY;
2601      STATUS : RTEMS.STATUS_CODES;
2602   begin
2603
2604      RTEMS.IO_CLOSE(
2605         RTEMS.DEVICE_MAJOR_NUMBER'LAST,
2606         0,
2607         RTEMS.NULL_ADDRESS,
2608         RESULT,
2609         STATUS
2610      );
2611      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
2612         STATUS,
2613         RTEMS.INVALID_NUMBER,
2614         "IO_CLOSE WITH BAD MAJOR NUMBER"
2615      );
2616      TEXT_IO.PUT_LINE("TA1 - io_close - INVALID_NUMBER");
2617
2618      RTEMS.IO_CONTROL(
2619         RTEMS.DEVICE_MAJOR_NUMBER'LAST,
2620         0,
2621         RTEMS.NULL_ADDRESS,
2622         RESULT,
2623         STATUS
2624      );
2625      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
2626         STATUS,
2627         RTEMS.INVALID_NUMBER,
2628         "IO_CONTROL WITH BAD MAJOR NUMBER"
2629      );
2630      TEXT_IO.PUT_LINE(
2631         "TA1 - io_control - INVALID_NUMBER"
2632      );
2633
2634      RTEMS.IO_INITIALIZE(
2635         RTEMS.DEVICE_MAJOR_NUMBER'LAST,
2636         0,
2637         RTEMS.NULL_ADDRESS,
2638         RESULT,
2639         STATUS
2640      );
2641      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
2642         STATUS,
2643         RTEMS.INVALID_NUMBER,
2644         "IO_INITIALIZE WITH BAD MAJOR NUMBER"
2645      );
2646      TEXT_IO.PUT_LINE(
2647         "TA1 - io_initialize - INVALID_NUMBER"
2648      );
2649
2650      RTEMS.IO_OPEN(
2651         RTEMS.DEVICE_MAJOR_NUMBER'LAST,
2652         0,
2653         RTEMS.NULL_ADDRESS,
2654         RESULT,
2655         STATUS
2656      );
2657      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
2658         STATUS,
2659         RTEMS.INVALID_NUMBER,
2660         "IO_OPEN WITH BAD MAJOR NUMBER"
2661      );
2662      TEXT_IO.PUT_LINE( "TA1 - io_open - INVALID_NUMBER" );
2663
2664      RTEMS.IO_READ(
2665         RTEMS.DEVICE_MAJOR_NUMBER'LAST,
2666         0,
2667         RTEMS.NULL_ADDRESS,
2668         RESULT,
2669         STATUS
2670      );
2671      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
2672         STATUS,
2673         RTEMS.INVALID_NUMBER,
2674         "IO_READ WITH BAD MAJOR NUMBER"
2675      );
2676      TEXT_IO.PUT_LINE( "TA1 - io_read - INVALID_NUMBER" );
2677
2678      RTEMS.IO_WRITE(
2679         RTEMS.DEVICE_MAJOR_NUMBER'LAST,
2680         0,
2681         RTEMS.NULL_ADDRESS,
2682         RESULT,
2683         STATUS
2684      );
2685      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
2686         STATUS,
2687         RTEMS.INVALID_NUMBER,
2688         "IO_WRITE WITH BAD MAJOR NUMBER"
2689      );
2690      TEXT_IO.PUT_LINE( "TA1 - io_write - INVALID_NUMBER" );
2691
2692      TIME := ( 2000, 12, 31, 23, 59, 59, 0 );
2693      RTEMS.CLOCK_SET( TIME, STATUS );
2694      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "CLOCK_SET SUCCESSFUL" );
2695      TEST_SUPPORT.PRINT_TIME(
2696         "TA1 - clock_set - ",
2697         TIME,
2698         " - SUCCESSFUL"
2699      );
2700      TEXT_IO.NEW_LINE;
2701      RTEMS.TASK_WAKE_AFTER( TEST_SUPPORT.TICKS_PER_SECOND, STATUS );
2702      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_WAKE_AFTER" );
2703      RTEMS.CLOCK_GET( RTEMS.CLOCK_GET_TOD, TIME'ADDRESS, STATUS );
2704      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "CLOCK_GET SUCCESSFUL" );
2705      TEST_SUPPORT.PRINT_TIME(
2706         "TA1 - clock_get - ",
2707         TIME,
2708         " - SUCCESSFUL"
2709      );
2710      TEXT_IO.NEW_LINE;
2711
2712      TIME := ( 1999, 12, 31, 23, 59, 59, 0 );
2713      RTEMS.CLOCK_SET( TIME, STATUS );
2714      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "CLOCK_SET SUCCESSFUL" );
2715      TEST_SUPPORT.PRINT_TIME(
2716         "TA1 - clock_set - ",
2717         TIME,
2718         " - SUCCESSFUL"
2719      );
2720      TEXT_IO.NEW_LINE;
2721      RTEMS.TASK_WAKE_AFTER( TEST_SUPPORT.TICKS_PER_SECOND, STATUS );
2722      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_WAKE_AFTER" );
2723      RTEMS.CLOCK_GET( RTEMS.CLOCK_GET_TOD, TIME'ADDRESS, STATUS );
2724      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "CLOCK_GET SUCCESSFUL" );
2725      TEST_SUPPORT.PRINT_TIME(
2726         "TA1 - clock_get - ",
2727         TIME,
2728         " - SUCCESSFUL"
2729      );
2730      TEXT_IO.NEW_LINE;
2731
2732      TIME := ( 2100, 12, 31, 23, 59, 59, 0 );
2733      RTEMS.CLOCK_SET( TIME, STATUS );
2734      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "CLOCK_SET SUCCESSFUL" );
2735      TEST_SUPPORT.PRINT_TIME(
2736         "TA1 - clock_set - ",
2737         TIME,
2738         " - SUCCESSFUL"
2739      );
2740      TEXT_IO.NEW_LINE;
2741      RTEMS.TASK_WAKE_AFTER( TEST_SUPPORT.TICKS_PER_SECOND, STATUS );
2742      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_WAKE_AFTER" );
2743      RTEMS.CLOCK_GET( RTEMS.CLOCK_GET_TOD, TIME'ADDRESS, STATUS );
2744      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "CLOCK_GET SUCCESSFUL" );
2745      TEST_SUPPORT.PRINT_TIME(
2746         "TA1 - clock_get - ",
2747         TIME,
2748         " - SUCCESSFUL"
2749      );
2750      TEXT_IO.NEW_LINE;
2751
2752      TIME := ( 2099, 12, 31, 23, 59, 59, 0 );
2753      RTEMS.CLOCK_SET( TIME, STATUS );
2754      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "CLOCK_SET SUCCESSFUL" );
2755      TEST_SUPPORT.PRINT_TIME(
2756         "TA1 - clock_set - ",
2757         TIME,
2758         " - SUCCESSFUL"
2759      );
2760      TEXT_IO.NEW_LINE;
2761      RTEMS.TASK_WAKE_AFTER( TEST_SUPPORT.TICKS_PER_SECOND, STATUS );
2762      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_WAKE_AFTER" );
2763      RTEMS.CLOCK_GET( RTEMS.CLOCK_GET_TOD, TIME'ADDRESS, STATUS );
2764      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "CLOCK_GET SUCCESSFUL" );
2765      TEST_SUPPORT.PRINT_TIME(
2766         "TA1 - clock_get - ",
2767         TIME,
2768         " - SUCCESSFUL"
2769      );
2770      TEXT_IO.NEW_LINE;
2771
2772      TIME := ( 1991, 12, 31, 23, 59, 59, 0 );
2773      RTEMS.CLOCK_SET( TIME, STATUS );
2774      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "CLOCK_SET SUCCESSFUL" );
2775      TEST_SUPPORT.PRINT_TIME(
2776         "TA1 - clock_set - ",
2777         TIME,
2778         " - SUCCESSFUL"
2779      );
2780      TEXT_IO.NEW_LINE;
2781      RTEMS.TASK_WAKE_AFTER( TEST_SUPPORT.TICKS_PER_SECOND, STATUS );
2782      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_WAKE_AFTER" );
2783      RTEMS.CLOCK_GET( RTEMS.CLOCK_GET_TOD, TIME'ADDRESS, STATUS );
2784      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "CLOCK_GET SUCCESSFUL" );
2785      TEST_SUPPORT.PRINT_TIME(
2786         "TA1 - clock_get - ",
2787         TIME,
2788         " - SUCCESSFUL"
2789      );
2790      TEXT_IO.NEW_LINE;
2791
2792   end SCREEN_13;
2793
2794--PAGE
2795--
2796--  SCREEN_14
2797--
2798
2799   procedure SCREEN_14
2800   is
2801      TIME   : RTEMS.TIME_OF_DAY;
2802      STATUS : RTEMS.STATUS_CODES;
2803   begin
2804
2805      RTEMS.TIMER_CREATE( 0, SPTEST.JUNK_ID, STATUS );
2806      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
2807         STATUS,
2808         RTEMS.INVALID_NAME,
2809         "TIMER_CREATE WITH ILLEGAL NAME"
2810      );
2811      TEXT_IO.PUT_LINE( "TA1 - timer_create - INVALID_NAME" );
2812
2813      RTEMS.TIMER_CREATE(
2814         SPTEST.TIMER_NAME( 1 ),
2815         SPTEST.TIMER_ID( 1 ),
2816         STATUS
2817      );
2818      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TIMER_CREATE" );
2819      TEXT_IO.PUT_LINE( "TA1 - timer_create - 1 - SUCCESSFUL" );
2820
2821      RTEMS.TIMER_CREATE(
2822         SPTEST.TIMER_NAME( 1 ),
2823         SPTEST.JUNK_ID,
2824         STATUS
2825      );
2826      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
2827         STATUS,
2828         RTEMS.TOO_MANY,
2829         "TIMER_CREATE FOR TOO MANY"
2830      );
2831      TEXT_IO.PUT_LINE( "TA1 - timer_create - 2 - TOO_MANY" );
2832
2833      RTEMS.TIMER_DELETE( 100, STATUS );
2834      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
2835         STATUS,
2836         RTEMS.INVALID_ID,
2837         "TIMER_DELETE WITH ILLEGAL ID"
2838      );
2839      TEXT_IO.PUT_LINE( "TA1 - timer_delete - local INVALID_ID" );
2840
2841      RTEMS.TIMER_DELETE( 16#10100#, STATUS );
2842      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
2843         STATUS,
2844         RTEMS.INVALID_ID,
2845         "TIMER_DELETE WITH ILLEGAL ID"
2846      );
2847      TEXT_IO.PUT_LINE( "TA1 - timer_delete - global INVALID_ID" );
2848
2849      RTEMS.TIMER_IDENT( 0, SPTEST.JUNK_ID, STATUS );
2850      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
2851         STATUS,
2852         RTEMS.INVALID_NAME,
2853         "TIMER_IDENT WITH ILLEGAL NAME"
2854      );
2855      TEXT_IO.PUT_LINE( "TA1 - timer_ident - INVALID_NAME" );
2856
2857      RTEMS.TIMER_CANCEL( 16#10100#, STATUS );
2858      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
2859         STATUS,
2860         RTEMS.INVALID_ID,
2861         "TIMER_CANCEL WITH ILLEGAL ID"
2862      );
2863      TEXT_IO.PUT_LINE( "TA1 - timer_cancel - INVALID_ID" );
2864
2865      RTEMS.TIMER_RESET( 16#10100#, STATUS );
2866      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
2867         STATUS,
2868         RTEMS.INVALID_ID,
2869         "TIMER_RESET WITH ILLEGAL ID"
2870      );
2871      TEXT_IO.PUT_LINE( "TA1 - timer_reset - INVALID_ID" );
2872
2873      RTEMS.TIMER_RESET( SPTEST.TIMER_ID( 1 ), STATUS );
2874      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
2875         STATUS,
2876         RTEMS.NOT_DEFINED,
2877         "TIMER_RESET BEFORE INITIATED"
2878      );
2879      TEXT_IO.PUT_LINE( "TA1 - timer_reset - NOT_DEFINED" );
2880
2881      RTEMS.TIMER_FIRE_AFTER(
2882         16#10100#,
2883         5 * TEST_SUPPORT.TICKS_PER_SECOND,
2884         SPTEST.DELAYED_SUBPROGRAM'ACCESS,
2885         RTEMS.NULL_ADDRESS,
2886         STATUS
2887      );
2888      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
2889         STATUS,
2890         RTEMS.INVALID_ID,
2891         "TIMER_FIRE_AFTER WITH ILLEGAL ID"
2892      );
2893      TEXT_IO.PUT_LINE( "TA1 - timer_fire_after - INVALID_ID" );
2894
2895      TIME := ( 1994, 12, 31, 1, 0, 0, 0 );
2896      RTEMS.TIMER_FIRE_WHEN(
2897         16#10100#,
2898         TIME,
2899         SPTEST.DELAYED_SUBPROGRAM'ACCESS,
2900         RTEMS.NULL_ADDRESS,
2901         STATUS
2902      );
2903      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
2904         STATUS,
2905         RTEMS.INVALID_ID,
2906         "TIMER_FIRE_WHEN WITH ILLEGAL ID"
2907      );
2908      TEXT_IO.PUT_LINE( "TA1 - timer_fire_when - INVALID_ID" );
2909
2910      RTEMS.TIMER_FIRE_AFTER(
2911         SPTEST.TIMER_ID( 1 ),
2912         0,
2913         SPTEST.DELAYED_SUBPROGRAM'ACCESS,
2914         RTEMS.NULL_ADDRESS,
2915         STATUS
2916      );
2917      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
2918         STATUS,
2919         RTEMS.INVALID_NUMBER,
2920         "TIMER_FIRE_AFTER WITH 0 TICKS"
2921      );
2922      TEXT_IO.PUT_LINE( "TA1 - timer_fire_after - INVALID_NUMBER" );
2923
2924      TIME := ( 1987, 2, 5, 8, 30, 45, 0 );
2925      RTEMS.TIMER_FIRE_WHEN(
2926         SPTEST.TIMER_ID( 1 ),
2927         TIME,
2928         SPTEST.DELAYED_SUBPROGRAM'ACCESS,
2929         RTEMS.NULL_ADDRESS,
2930         STATUS
2931      );
2932      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
2933         STATUS,
2934         RTEMS.INVALID_CLOCK,
2935         "TIMER_FIRE_WHEN WITH ILLEGAL TIME"
2936      );
2937      TEST_SUPPORT.PRINT_TIME(
2938         "TA1 - timer_fire_when - ",
2939         TIME,
2940         " - INVALID_CLOCK"
2941      );
2942      TEXT_IO.NEW_LINE;
2943
2944      RTEMS.CLOCK_GET( RTEMS.CLOCK_GET_TOD, TIME'ADDRESS, STATUS );
2945      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "CLOCK_GET SUCCESSFUL" );
2946      TEST_SUPPORT.PRINT_TIME( "TA1 - clock_get       - ", TIME, "" );
2947      TEXT_IO.NEW_LINE;
2948
2949      TIME := ( 1990, 2, 5, 8, 30, 45, 0 );
2950      RTEMS.TIMER_FIRE_WHEN(
2951         SPTEST.TIMER_ID( 1 ),
2952         TIME,
2953         SPTEST.DELAYED_SUBPROGRAM'ACCESS,
2954         RTEMS.NULL_ADDRESS,
2955         STATUS
2956      );
2957      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
2958         STATUS,
2959         RTEMS.INVALID_CLOCK,
2960         "TIMER_FIRE_WHEN BEFORE CURRENT TIME"
2961      );
2962      TEST_SUPPORT.PRINT_TIME(
2963         "TA1 - timer_fire_when - ",
2964         TIME,
2965         " - before INVALID_CLOCK"
2966      );
2967      TEXT_IO.NEW_LINE;
2968
2969   end SCREEN_14;
2970
2971--PAGE
2972--
2973--  TASK_1
2974--
2975
2976   procedure TASK_1 (
2977      ARGUMENT : in     RTEMS.TASK_ARGUMENT
2978   ) is
2979      STATUS : RTEMS.STATUS_CODES;
2980   begin
2981
2982      SPTEST.SCREEN_1;
2983      TEST_SUPPORT.PAUSE_AND_SCREEN_NUMBER( 2 );
2984
2985      SPTEST.SCREEN_2;
2986      TEST_SUPPORT.PAUSE_AND_SCREEN_NUMBER( 3 );
2987
2988      SPTEST.SCREEN_3;
2989      TEST_SUPPORT.PAUSE_AND_SCREEN_NUMBER( 4 );
2990
2991      SPTEST.SCREEN_4;
2992      TEST_SUPPORT.PAUSE_AND_SCREEN_NUMBER( 5 );
2993
2994      SPTEST.SCREEN_5;
2995      TEST_SUPPORT.PAUSE_AND_SCREEN_NUMBER( 6 );
2996
2997      SPTEST.SCREEN_6;
2998      TEST_SUPPORT.PAUSE_AND_SCREEN_NUMBER( 7 );
2999
3000      SPTEST.SCREEN_7;
3001      TEST_SUPPORT.PAUSE_AND_SCREEN_NUMBER( 8 );
3002
3003      SPTEST.SCREEN_8;
3004      TEST_SUPPORT.PAUSE_AND_SCREEN_NUMBER( 9 );
3005
3006      SPTEST.SCREEN_9;
3007      TEST_SUPPORT.PAUSE_AND_SCREEN_NUMBER( 10 );
3008
3009      SPTEST.SCREEN_10;
3010      TEST_SUPPORT.PAUSE_AND_SCREEN_NUMBER( 11 );
3011
3012      SPTEST.SCREEN_11;
3013      TEST_SUPPORT.PAUSE_AND_SCREEN_NUMBER( 12 );
3014
3015      SPTEST.SCREEN_12;
3016      TEST_SUPPORT.PAUSE_AND_SCREEN_NUMBER( 13 );
3017
3018      SPTEST.SCREEN_13;
3019      TEST_SUPPORT.PAUSE_AND_SCREEN_NUMBER( 14 );
3020
3021      SPTEST.SCREEN_14;
3022
3023      TEXT_IO.PUT_LINE( "*** END OF TEST 9 ***" );
3024      RTEMS.SHUTDOWN_EXECUTIVE( 0 );
3025
3026   end TASK_1;
3027
3028--PAGE
3029--
3030--  TASK_2
3031--
3032
3033   procedure TASK_2 (
3034      ARGUMENT : in     RTEMS.TASK_ARGUMENT
3035   ) is
3036      STATUS : RTEMS.STATUS_CODES;
3037   begin
3038
3039      TEXT_IO.PUT_LINE( "TA2 - semaphore_obtain - sem 1 - WAIT FOREVER" );
3040      RTEMS.SEMAPHORE_OBTAIN(
3041         SPTEST.SEMAPHORE_ID( 1 ),
3042         RTEMS.DEFAULT_OPTIONS,
3043         RTEMS.NO_TIMEOUT,
3044         STATUS
3045      );
3046      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
3047         STATUS,
3048         RTEMS.OBJECT_WAS_DELETED,
3049         "SEMAPHORE_OBTAIN WAITING TO BE DELETED"
3050      );
3051      TEXT_IO.PUT_LINE(
3052         "TA2 - semaphore_obtain - woke up with OBJECT_WAS_DELETED"
3053      );
3054
3055      TEXT_IO.PUT_LINE( 
3056         "TA2 - task_delete - delete self - SUCCESSFUL" 
3057      );
3058      RTEMS.TASK_DELETE( RTEMS.SELF, STATUS );
3059      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_DELETE OF TA2" );
3060
3061   end TASK_2;
3062
3063--PAGE
3064--
3065--  TASK_3
3066--
3067
3068   procedure TASK_3 (
3069      ARGUMENT : in     RTEMS.TASK_ARGUMENT
3070   ) is
3071      BUFFER         : RTEMS.BUFFER;
3072      BUFFER_POINTER : RTEMS.BUFFER_POINTER;
3073      STATUS         : RTEMS.STATUS_CODES;
3074   begin
3075
3076      BUFFER_POINTER := RTEMS.TO_BUFFER_POINTER( BUFFER'ADDRESS );
3077
3078      TEXT_IO.PUT_LINE(
3079         "TA3 - message_queue_receive - Q 1 - WAIT FOREVER"
3080      );
3081      RTEMS.MESSAGE_QUEUE_RECEIVE(
3082         SPTEST.QUEUE_ID( 1 ),
3083         BUFFER_POINTER,
3084         RTEMS.DEFAULT_OPTIONS,
3085         RTEMS.NO_TIMEOUT,
3086         STATUS
3087      );
3088      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
3089         STATUS,
3090         RTEMS.OBJECT_WAS_DELETED,
3091         "MESSAGE_QUEUE_RECEIVE WAITING TO BE DELETED"
3092      );
3093      TEXT_IO.PUT( "TA3 - message_queue_receive - woke up " );
3094      TEXT_IO.PUT_LINE( "with OBJECT_WAS_DELETED" );
3095
3096      TEXT_IO.PUT_LINE( 
3097         "TA3 - task_delete - delete self - SUCCESSFUL" 
3098      );
3099      RTEMS.TASK_DELETE( RTEMS.SELF, STATUS );
3100      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_DELETE OF TA3" );
3101
3102   end TASK_3;
3103
3104--PAGE
3105--
3106--  TASK_4
3107--
3108
3109   procedure TASK_4 (
3110      ARGUMENT : in     RTEMS.TASK_ARGUMENT
3111   ) is
3112      STATUS : RTEMS.STATUS_CODES;
3113   begin
3114
3115      RTEMS.RATE_MONOTONIC_CANCEL(
3116         SPTEST.PERIOD_ID( 1 ),
3117         STATUS
3118      );
3119      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
3120         STATUS,
3121         RTEMS.NOT_OWNER_OF_RESOURCE,
3122         "RATE_MONOTONIC_CANCEL NOT THE OWNER"
3123      );
3124      TEXT_IO.PUT_LINE(
3125         "TA4 - rate_monotonic_cancel - NOT_OWNER_OF_RESOURCE"
3126       );
3127
3128      RTEMS.RATE_MONOTONIC_PERIOD(
3129         SPTEST.PERIOD_ID( 1 ),
3130         5,
3131         STATUS
3132      );
3133      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
3134         STATUS,
3135         RTEMS.NOT_OWNER_OF_RESOURCE,
3136         "RATE_MONOTONIC_PERIOD NOT THE OWNER"
3137      );
3138      TEXT_IO.PUT_LINE(
3139         "TA4 - rate_monotonic_period - NOT_OWNER_OF_RESOURCE"
3140      );
3141
3142      TEXT_IO.PUT_LINE(
3143         "TA4 - task_delete - delete self - SUCCESSFUL" 
3144      );
3145      RTEMS.TASK_DELETE( RTEMS.SELF, STATUS );
3146      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_DELETE OF TA4" );
3147
3148
3149   end TASK_4;
3150
3151end SPTEST;
Note: See TracBrowser for help on using the repository browser.