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

4.104.114.84.95
Last change on this file since bf6fa0f4 was bf6fa0f4, checked in by Ralf Corsepius <ralf.corsepius@…>, on Aug 27, 2002 at 5:06:30 PM

2002-08-27 Ralf Corsepius <corsepiu@…>

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