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

4.104.114.84.95
Last change on this file since a846105 was a846105, checked in by Ralf Corsepius <ralf.corsepius@…>, on 08/27/02 at 06:57:46

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

  • sptests/sp09/sptest.adb: Add Result to SCREEN_13. Remove Status from TASK_1.
  • sptests/sp21/sptest.adb: Add Result to TASK_1.
  • tmtests/tm20/tmtest.adb: Remove various RETURN_VALUEs.
  • ada.am: Remove ADACOMPILE, ADAC. Add AM_LDFLAGS, LDFLAGS.
  • configure.ac: Check for m4. Abort if HAS_GNAT = no.
  • Property mode set to 100644
File size: 85.8 KB
RevLine 
[6d4e604b]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--
[bf9ae83]13--  COPYRIGHT (c) 1989-1997.
[6d4e604b]14--  On-Line Applications Research Corporation (OAR).
[bf9ae83]15--  Copyright assigned to U.S. Government, 1994.
[6d4e604b]16--
[bf9ae83]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.
[6d4e604b]20--
[bf9ae83]21--  $Id$
[6d4e604b]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,
[c1ef834]587         RTEMS.CONFIGURATION.WORK_SPACE_SIZE,
[6d4e604b]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,
[c1ef834]887         RTEMS.NO_PRIORITY,
[6d4e604b]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,
[c1ef834]902         RTEMS.NO_PRIORITY,
[6d4e604b]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,
[c1ef834]916         RTEMS.NO_PRIORITY,
[6d4e604b]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
[c1ef834]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
[6d4e604b]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,
[c1ef834]950         RTEMS.NO_PRIORITY,
[6d4e604b]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,
[c1ef834]965         RTEMS.NO_PRIORITY,
[6d4e604b]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,
[c1ef834]980         RTEMS.NO_PRIORITY,
[6d4e604b]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,
[c1ef834]995         RTEMS.NO_PRIORITY,
[6d4e604b]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
[c1ef834]1201      BUFFER         : SPTEST.BUFFER;
1202      BUFFER_POINTER : RTEMS.ADDRESS;
[6d4e604b]1203      COUNT          : RTEMS.UNSIGNED32;
[c1ef834]1204      MESSAGE_SIZE   : RTEMS.UNSIGNED32;
[6d4e604b]1205      STATUS         : RTEMS.STATUS_CODES;
1206   begin
1207
[c1ef834]1208      BUFFER_POINTER := BUFFER'ADDRESS;
1209
[6d4e604b]1210      RTEMS.MESSAGE_QUEUE_BROADCAST(
1211         100,
1212         BUFFER_POINTER,
[c1ef834]1213         16,
[6d4e604b]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,
[c1ef834]1229         16,
[6d4e604b]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,
[c1ef834]1246         16,
[6d4e604b]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,
[c1ef834]1262         16,
1263         RTEMS.DEFAULT_ATTRIBUTES,
[6d4e604b]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(
[c1ef834]1272         "TA1 - message_queue_create - Q 1 - 2 DEEP - SUCCESSFUL"
[6d4e604b]1273      );
1274
1275      RTEMS.MESSAGE_QUEUE_CREATE(
1276         SPTEST.QUEUE_NAME( 2 ),
1277         1,
[c1ef834]1278         16,
[6d4e604b]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,
[c1ef834]1338         MESSAGE_SIZE,
[6d4e604b]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,
[c1ef834]1353         MESSAGE_SIZE,
[6d4e604b]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,
[c1ef834]1373         MESSAGE_SIZE,
[6d4e604b]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
[c1ef834]1385      RTEMS.MESSAGE_QUEUE_SEND( 100, BUFFER_POINTER, 16, STATUS );
[6d4e604b]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,
[c1ef834]1396         16,
[6d4e604b]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,
[c1ef834]1407         16,
[6d4e604b]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,
[c1ef834]1418         16,
[6d4e604b]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
[c1ef834]1439      BUFFER         : SPTEST.BUFFER;
1440      BUFFER_POINTER : RTEMS.ADDRESS;
[6d4e604b]1441      STATUS         : RTEMS.STATUS_CODES;
1442   begin
1443
[c1ef834]1444      BUFFER_POINTER := BUFFER'ADDRESS;
[6d4e604b]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,
[c1ef834]1458         16,
1459         RTEMS.DEFAULT_ATTRIBUTES,
[6d4e604b]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(
[c1ef834]1468         "TA1 - message_queue_create - Q 1 - 2 DEEP - SUCCESSFUL"
[6d4e604b]1469      );
1470
1471      RTEMS.MESSAGE_QUEUE_SEND(
1472         SPTEST.QUEUE_ID( 1 ),
1473         BUFFER_POINTER,
[c1ef834]1474         16,
[6d4e604b]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,
[c1ef834]1485         16,
[6d4e604b]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,
[c1ef834]1496         16,
[6d4e604b]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,
[c1ef834]1520         16,
1521         RTEMS.DEFAULT_ATTRIBUTES,
[6d4e604b]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(
[c1ef834]1530         "TA1 - message_queue_create - Q 1 - 3 DEEP - SUCCESSFUL"
[6d4e604b]1531      );
1532
1533      RTEMS.MESSAGE_QUEUE_SEND(
1534         SPTEST.QUEUE_ID( 1 ),
1535         BUFFER_POINTER,
[c1ef834]1536         16,
[6d4e604b]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,
[c1ef834]1547         16,
[6d4e604b]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,
[c1ef834]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,
[6d4e604b]1570         STATUS
1571      );
1572      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
1573         STATUS,
[c1ef834]1574         RTEMS.TOO_MANY,
[6d4e604b]1575         "MESSAGE_QUEUE_SEND TOO MANY TO LIMITED QUEUE"
1576      );
1577      TEXT_IO.PUT_LINE(
[c1ef834]1578         "TA1 - message_queue_send - BUFFER 4 TO Q 1 - TOO_MANY"
[6d4e604b]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,
[c1ef834]1593         16,
1594         RTEMS.DEFAULT_ATTRIBUTES,
[6d4e604b]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(
[c1ef834]1603         "TA1 - message_queue_create - Q 1 - 3 DEEP - SUCCESSFUL"
[6d4e604b]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,
[c1ef834]2295         16#40#,
[6d4e604b]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,
[c1ef834]2311         16#40#,
[6d4e604b]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,
[c1ef834]2327         16#40#,
[6d4e604b]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,
[c1ef834]2344         16#40#,
[6d4e604b]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,
[c1ef834]2355         SPTEST.REGION_LENGTH,
2356         16#40#,
[6d4e604b]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,
[c1ef834]2394         16#40#,
[6d4e604b]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 ),
[c1ef834]2409         (SPTEST.REGION_GOOD_AREA'SIZE / 8) * 2,
[6d4e604b]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 ),
[c1ef834]2435         SPTEST.REGION_LENGTH / 2,
[6d4e604b]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
[c1ef834]2505      OFFSET := 0;
2506      GOOD_BACK_FLAG := 0;
2507      GOOD_FRONT_FLAG := 0;
[6d4e604b]2508
2509      TEXT_IO.PUT_LINE(
[c1ef834]2510         "TA1 - region_return_segment - INVALID_ADDRESS - SKIPPED"
[6d4e604b]2511      );
2512      TEXT_IO.PUT_LINE(
[c1ef834]2513         "TA1 - region_return_segment - INVALID_ADDRESS - SKIPPED"
[6d4e604b]2514      );
2515
[c1ef834]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;
[6d4e604b]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
[a846105]2654      RESULT : RTEMS.Unsigned32;
[6d4e604b]2655      TIME   : RTEMS.TIME_OF_DAY;
2656      STATUS : RTEMS.STATUS_CODES;
2657   begin
2658
2659      RTEMS.IO_CLOSE(
2660         RTEMS.DEVICE_MAJOR_NUMBER'LAST,
2661         0,
2662         RTEMS.NULL_ADDRESS,
2663         STATUS
2664      );
2665      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
2666         STATUS,
2667         RTEMS.INVALID_NUMBER,
2668         "IO_CLOSE WITH BAD MAJOR NUMBER"
2669      );
2670      TEXT_IO.PUT_LINE("TA1 - io_close - INVALID_NUMBER");
2671
2672      RTEMS.IO_CONTROL(
2673         RTEMS.DEVICE_MAJOR_NUMBER'LAST,
2674         0,
2675         RTEMS.NULL_ADDRESS,
2676         STATUS
2677      );
2678      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
2679         STATUS,
2680         RTEMS.INVALID_NUMBER,
2681         "IO_CONTROL WITH BAD MAJOR NUMBER"
2682      );
2683      TEXT_IO.PUT_LINE(
2684         "TA1 - io_control - INVALID_NUMBER"
2685      );
2686
2687      RTEMS.IO_INITIALIZE(
2688         RTEMS.DEVICE_MAJOR_NUMBER'LAST,
2689         0,
2690         RTEMS.NULL_ADDRESS,
[a846105]2691         RESULT,
[6d4e604b]2692         STATUS
2693      );
2694      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
2695         STATUS,
2696         RTEMS.INVALID_NUMBER,
2697         "IO_INITIALIZE WITH BAD MAJOR NUMBER"
2698      );
2699      TEXT_IO.PUT_LINE(
2700         "TA1 - io_initialize - INVALID_NUMBER"
2701      );
2702
2703      RTEMS.IO_OPEN(
2704         RTEMS.DEVICE_MAJOR_NUMBER'LAST,
2705         0,
2706         RTEMS.NULL_ADDRESS,
2707         STATUS
2708      );
2709      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
2710         STATUS,
2711         RTEMS.INVALID_NUMBER,
2712         "IO_OPEN WITH BAD MAJOR NUMBER"
2713      );
2714      TEXT_IO.PUT_LINE( "TA1 - io_open - INVALID_NUMBER" );
2715
2716      RTEMS.IO_READ(
2717         RTEMS.DEVICE_MAJOR_NUMBER'LAST,
2718         0,
2719         RTEMS.NULL_ADDRESS,
2720         STATUS
2721      );
2722      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
2723         STATUS,
2724         RTEMS.INVALID_NUMBER,
2725         "IO_READ WITH BAD MAJOR NUMBER"
2726      );
2727      TEXT_IO.PUT_LINE( "TA1 - io_read - INVALID_NUMBER" );
2728
2729      RTEMS.IO_WRITE(
2730         RTEMS.DEVICE_MAJOR_NUMBER'LAST,
2731         0,
2732         RTEMS.NULL_ADDRESS,
2733         STATUS
2734      );
2735      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
2736         STATUS,
2737         RTEMS.INVALID_NUMBER,
2738         "IO_WRITE WITH BAD MAJOR NUMBER"
2739      );
2740      TEXT_IO.PUT_LINE( "TA1 - io_write - INVALID_NUMBER" );
2741
2742      TIME := ( 2000, 12, 31, 23, 59, 59, 0 );
2743      RTEMS.CLOCK_SET( TIME, STATUS );
2744      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "CLOCK_SET SUCCESSFUL" );
2745      TEST_SUPPORT.PRINT_TIME(
2746         "TA1 - clock_set - ",
2747         TIME,
2748         " - SUCCESSFUL"
2749      );
2750      TEXT_IO.NEW_LINE;
2751      RTEMS.TASK_WAKE_AFTER( TEST_SUPPORT.TICKS_PER_SECOND, STATUS );
2752      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_WAKE_AFTER" );
2753      RTEMS.CLOCK_GET( RTEMS.CLOCK_GET_TOD, TIME'ADDRESS, STATUS );
2754      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "CLOCK_GET SUCCESSFUL" );
2755      TEST_SUPPORT.PRINT_TIME(
2756         "TA1 - clock_get - ",
2757         TIME,
2758         " - SUCCESSFUL"
2759      );
2760      TEXT_IO.NEW_LINE;
2761
2762      TIME := ( 1999, 12, 31, 23, 59, 59, 0 );
2763      RTEMS.CLOCK_SET( TIME, STATUS );
2764      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "CLOCK_SET SUCCESSFUL" );
2765      TEST_SUPPORT.PRINT_TIME(
2766         "TA1 - clock_set - ",
2767         TIME,
2768         " - SUCCESSFUL"
2769      );
2770      TEXT_IO.NEW_LINE;
2771      RTEMS.TASK_WAKE_AFTER( TEST_SUPPORT.TICKS_PER_SECOND, STATUS );
2772      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_WAKE_AFTER" );
2773      RTEMS.CLOCK_GET( RTEMS.CLOCK_GET_TOD, TIME'ADDRESS, STATUS );
2774      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "CLOCK_GET SUCCESSFUL" );
2775      TEST_SUPPORT.PRINT_TIME(
2776         "TA1 - clock_get - ",
2777         TIME,
2778         " - SUCCESSFUL"
2779      );
2780      TEXT_IO.NEW_LINE;
2781
2782      TIME := ( 2100, 12, 31, 23, 59, 59, 0 );
2783      RTEMS.CLOCK_SET( TIME, STATUS );
2784      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "CLOCK_SET SUCCESSFUL" );
2785      TEST_SUPPORT.PRINT_TIME(
2786         "TA1 - clock_set - ",
2787         TIME,
2788         " - SUCCESSFUL"
2789      );
2790      TEXT_IO.NEW_LINE;
2791      RTEMS.TASK_WAKE_AFTER( TEST_SUPPORT.TICKS_PER_SECOND, STATUS );
2792      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_WAKE_AFTER" );
2793      RTEMS.CLOCK_GET( RTEMS.CLOCK_GET_TOD, TIME'ADDRESS, STATUS );
2794      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "CLOCK_GET SUCCESSFUL" );
2795      TEST_SUPPORT.PRINT_TIME(
2796         "TA1 - clock_get - ",
2797         TIME,
2798         " - SUCCESSFUL"
2799      );
2800      TEXT_IO.NEW_LINE;
2801
2802      TIME := ( 2099, 12, 31, 23, 59, 59, 0 );
2803      RTEMS.CLOCK_SET( TIME, STATUS );
2804      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "CLOCK_SET SUCCESSFUL" );
2805      TEST_SUPPORT.PRINT_TIME(
2806         "TA1 - clock_set - ",
2807         TIME,
2808         " - SUCCESSFUL"
2809      );
2810      TEXT_IO.NEW_LINE;
2811      RTEMS.TASK_WAKE_AFTER( TEST_SUPPORT.TICKS_PER_SECOND, STATUS );
2812      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_WAKE_AFTER" );
2813      RTEMS.CLOCK_GET( RTEMS.CLOCK_GET_TOD, TIME'ADDRESS, STATUS );
2814      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "CLOCK_GET SUCCESSFUL" );
2815      TEST_SUPPORT.PRINT_TIME(
2816         "TA1 - clock_get - ",
2817         TIME,
2818         " - SUCCESSFUL"
2819      );
2820      TEXT_IO.NEW_LINE;
2821
2822      TIME := ( 1991, 12, 31, 23, 59, 59, 0 );
2823      RTEMS.CLOCK_SET( TIME, STATUS );
2824      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "CLOCK_SET SUCCESSFUL" );
2825      TEST_SUPPORT.PRINT_TIME(
2826         "TA1 - clock_set - ",
2827         TIME,
2828         " - SUCCESSFUL"
2829      );
2830      TEXT_IO.NEW_LINE;
2831      RTEMS.TASK_WAKE_AFTER( TEST_SUPPORT.TICKS_PER_SECOND, STATUS );
2832      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_WAKE_AFTER" );
2833      RTEMS.CLOCK_GET( RTEMS.CLOCK_GET_TOD, TIME'ADDRESS, STATUS );
2834      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "CLOCK_GET SUCCESSFUL" );
2835      TEST_SUPPORT.PRINT_TIME(
2836         "TA1 - clock_get - ",
2837         TIME,
2838         " - SUCCESSFUL"
2839      );
2840      TEXT_IO.NEW_LINE;
2841
2842   end SCREEN_13;
2843
2844--PAGE
2845--
2846--  SCREEN_14
2847--
2848
2849   procedure SCREEN_14
2850   is
2851      TIME   : RTEMS.TIME_OF_DAY;
2852      STATUS : RTEMS.STATUS_CODES;
2853   begin
2854
2855      RTEMS.TIMER_CREATE( 0, SPTEST.JUNK_ID, STATUS );
2856      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
2857         STATUS,
2858         RTEMS.INVALID_NAME,
2859         "TIMER_CREATE WITH ILLEGAL NAME"
2860      );
2861      TEXT_IO.PUT_LINE( "TA1 - timer_create - INVALID_NAME" );
2862
2863      RTEMS.TIMER_CREATE(
2864         SPTEST.TIMER_NAME( 1 ),
2865         SPTEST.TIMER_ID( 1 ),
2866         STATUS
2867      );
2868      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TIMER_CREATE" );
2869      TEXT_IO.PUT_LINE( "TA1 - timer_create - 1 - SUCCESSFUL" );
2870
2871      RTEMS.TIMER_CREATE(
2872         SPTEST.TIMER_NAME( 1 ),
2873         SPTEST.JUNK_ID,
2874         STATUS
2875      );
2876      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
2877         STATUS,
2878         RTEMS.TOO_MANY,
2879         "TIMER_CREATE FOR TOO MANY"
2880      );
2881      TEXT_IO.PUT_LINE( "TA1 - timer_create - 2 - TOO_MANY" );
2882
2883      RTEMS.TIMER_DELETE( 100, STATUS );
2884      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
2885         STATUS,
2886         RTEMS.INVALID_ID,
2887         "TIMER_DELETE WITH ILLEGAL ID"
2888      );
2889      TEXT_IO.PUT_LINE( "TA1 - timer_delete - local INVALID_ID" );
2890
2891      RTEMS.TIMER_DELETE( 16#10100#, STATUS );
2892      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
2893         STATUS,
2894         RTEMS.INVALID_ID,
2895         "TIMER_DELETE WITH ILLEGAL ID"
2896      );
2897      TEXT_IO.PUT_LINE( "TA1 - timer_delete - global INVALID_ID" );
2898
2899      RTEMS.TIMER_IDENT( 0, SPTEST.JUNK_ID, STATUS );
2900      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
2901         STATUS,
2902         RTEMS.INVALID_NAME,
2903         "TIMER_IDENT WITH ILLEGAL NAME"
2904      );
2905      TEXT_IO.PUT_LINE( "TA1 - timer_ident - INVALID_NAME" );
2906
2907      RTEMS.TIMER_CANCEL( 16#10100#, STATUS );
2908      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
2909         STATUS,
2910         RTEMS.INVALID_ID,
2911         "TIMER_CANCEL WITH ILLEGAL ID"
2912      );
2913      TEXT_IO.PUT_LINE( "TA1 - timer_cancel - INVALID_ID" );
2914
2915      RTEMS.TIMER_RESET( 16#10100#, STATUS );
2916      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
2917         STATUS,
2918         RTEMS.INVALID_ID,
2919         "TIMER_RESET WITH ILLEGAL ID"
2920      );
2921      TEXT_IO.PUT_LINE( "TA1 - timer_reset - INVALID_ID" );
2922
2923      RTEMS.TIMER_RESET( SPTEST.TIMER_ID( 1 ), STATUS );
2924      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
2925         STATUS,
2926         RTEMS.NOT_DEFINED,
2927         "TIMER_RESET BEFORE INITIATED"
2928      );
2929      TEXT_IO.PUT_LINE( "TA1 - timer_reset - NOT_DEFINED" );
2930
2931      RTEMS.TIMER_FIRE_AFTER(
2932         16#10100#,
2933         5 * TEST_SUPPORT.TICKS_PER_SECOND,
2934         SPTEST.DELAYED_SUBPROGRAM'ACCESS,
2935         RTEMS.NULL_ADDRESS,
2936         STATUS
2937      );
2938      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
2939         STATUS,
2940         RTEMS.INVALID_ID,
2941         "TIMER_FIRE_AFTER WITH ILLEGAL ID"
2942      );
2943      TEXT_IO.PUT_LINE( "TA1 - timer_fire_after - INVALID_ID" );
2944
2945      TIME := ( 1994, 12, 31, 1, 0, 0, 0 );
2946      RTEMS.TIMER_FIRE_WHEN(
2947         16#10100#,
2948         TIME,
2949         SPTEST.DELAYED_SUBPROGRAM'ACCESS,
2950         RTEMS.NULL_ADDRESS,
2951         STATUS
2952      );
2953      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
2954         STATUS,
2955         RTEMS.INVALID_ID,
2956         "TIMER_FIRE_WHEN WITH ILLEGAL ID"
2957      );
2958      TEXT_IO.PUT_LINE( "TA1 - timer_fire_when - INVALID_ID" );
2959
2960      RTEMS.TIMER_FIRE_AFTER(
2961         SPTEST.TIMER_ID( 1 ),
2962         0,
2963         SPTEST.DELAYED_SUBPROGRAM'ACCESS,
2964         RTEMS.NULL_ADDRESS,
2965         STATUS
2966      );
2967      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
2968         STATUS,
2969         RTEMS.INVALID_NUMBER,
2970         "TIMER_FIRE_AFTER WITH 0 TICKS"
2971      );
2972      TEXT_IO.PUT_LINE( "TA1 - timer_fire_after - INVALID_NUMBER" );
2973
2974      TIME := ( 1987, 2, 5, 8, 30, 45, 0 );
2975      RTEMS.TIMER_FIRE_WHEN(
2976         SPTEST.TIMER_ID( 1 ),
2977         TIME,
2978         SPTEST.DELAYED_SUBPROGRAM'ACCESS,
2979         RTEMS.NULL_ADDRESS,
2980         STATUS
2981      );
2982      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
2983         STATUS,
2984         RTEMS.INVALID_CLOCK,
2985         "TIMER_FIRE_WHEN WITH ILLEGAL TIME"
2986      );
2987      TEST_SUPPORT.PRINT_TIME(
2988         "TA1 - timer_fire_when - ",
2989         TIME,
2990         " - INVALID_CLOCK"
2991      );
2992      TEXT_IO.NEW_LINE;
2993
2994      RTEMS.CLOCK_GET( RTEMS.CLOCK_GET_TOD, TIME'ADDRESS, STATUS );
2995      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "CLOCK_GET SUCCESSFUL" );
2996      TEST_SUPPORT.PRINT_TIME( "TA1 - clock_get       - ", TIME, "" );
2997      TEXT_IO.NEW_LINE;
2998
2999      TIME := ( 1990, 2, 5, 8, 30, 45, 0 );
3000      RTEMS.TIMER_FIRE_WHEN(
3001         SPTEST.TIMER_ID( 1 ),
3002         TIME,
3003         SPTEST.DELAYED_SUBPROGRAM'ACCESS,
3004         RTEMS.NULL_ADDRESS,
3005         STATUS
3006      );
3007      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
3008         STATUS,
3009         RTEMS.INVALID_CLOCK,
3010         "TIMER_FIRE_WHEN BEFORE CURRENT TIME"
3011      );
3012      TEST_SUPPORT.PRINT_TIME(
3013         "TA1 - timer_fire_when - ",
3014         TIME,
3015         " - before INVALID_CLOCK"
3016      );
3017      TEXT_IO.NEW_LINE;
3018
3019   end SCREEN_14;
3020
3021--PAGE
3022--
3023--  TASK_1
3024--
3025
3026   procedure TASK_1 (
3027      ARGUMENT : in     RTEMS.TASK_ARGUMENT
3028   ) is
3029   begin
3030
3031      SPTEST.SCREEN_1;
3032      TEST_SUPPORT.PAUSE_AND_SCREEN_NUMBER( 2 );
3033
3034      SPTEST.SCREEN_2;
3035      TEST_SUPPORT.PAUSE_AND_SCREEN_NUMBER( 3 );
3036
3037      SPTEST.SCREEN_3;
3038      TEST_SUPPORT.PAUSE_AND_SCREEN_NUMBER( 4 );
3039
3040      SPTEST.SCREEN_4;
3041      TEST_SUPPORT.PAUSE_AND_SCREEN_NUMBER( 5 );
3042
3043      SPTEST.SCREEN_5;
3044      TEST_SUPPORT.PAUSE_AND_SCREEN_NUMBER( 6 );
3045
3046      SPTEST.SCREEN_6;
3047      TEST_SUPPORT.PAUSE_AND_SCREEN_NUMBER( 7 );
3048
3049      SPTEST.SCREEN_7;
3050      TEST_SUPPORT.PAUSE_AND_SCREEN_NUMBER( 8 );
3051
3052      SPTEST.SCREEN_8;
3053      TEST_SUPPORT.PAUSE_AND_SCREEN_NUMBER( 9 );
3054
3055      SPTEST.SCREEN_9;
3056      TEST_SUPPORT.PAUSE_AND_SCREEN_NUMBER( 10 );
3057
3058      SPTEST.SCREEN_10;
3059      TEST_SUPPORT.PAUSE_AND_SCREEN_NUMBER( 11 );
3060
3061      SPTEST.SCREEN_11;
3062      TEST_SUPPORT.PAUSE_AND_SCREEN_NUMBER( 12 );
3063
3064      SPTEST.SCREEN_12;
3065      TEST_SUPPORT.PAUSE_AND_SCREEN_NUMBER( 13 );
3066
3067      SPTEST.SCREEN_13;
3068      TEST_SUPPORT.PAUSE_AND_SCREEN_NUMBER( 14 );
3069
3070      SPTEST.SCREEN_14;
3071
3072      TEXT_IO.PUT_LINE( "*** END OF TEST 9 ***" );
3073      RTEMS.SHUTDOWN_EXECUTIVE( 0 );
3074
3075   end TASK_1;
3076
3077--PAGE
3078--
3079--  TASK_2
3080--
3081
3082   procedure TASK_2 (
3083      ARGUMENT : in     RTEMS.TASK_ARGUMENT
3084   ) is
3085      STATUS : RTEMS.STATUS_CODES;
3086   begin
3087
3088      TEXT_IO.PUT_LINE( "TA2 - semaphore_obtain - sem 1 - WAIT FOREVER" );
3089      RTEMS.SEMAPHORE_OBTAIN(
3090         SPTEST.SEMAPHORE_ID( 1 ),
3091         RTEMS.DEFAULT_OPTIONS,
3092         RTEMS.NO_TIMEOUT,
3093         STATUS
3094      );
3095      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
3096         STATUS,
3097         RTEMS.OBJECT_WAS_DELETED,
3098         "SEMAPHORE_OBTAIN WAITING TO BE DELETED"
3099      );
3100      TEXT_IO.PUT_LINE(
3101         "TA2 - semaphore_obtain - woke up with OBJECT_WAS_DELETED"
3102      );
3103
3104      TEXT_IO.PUT_LINE(
3105         "TA2 - task_delete - delete self - SUCCESSFUL"
3106      );
3107      RTEMS.TASK_DELETE( RTEMS.SELF, STATUS );
3108      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_DELETE OF TA2" );
3109
3110   end TASK_2;
3111
3112--PAGE
3113--
3114--  TASK_3
3115--
3116
3117   procedure TASK_3 (
3118      ARGUMENT : in     RTEMS.TASK_ARGUMENT
3119   ) is
[c1ef834]3120      BUFFER         : SPTEST.BUFFER;
3121      BUFFER_POINTER : RTEMS.ADDRESS;
3122      MESSAGE_SIZE   : RTEMS.UNSIGNED32;
[6d4e604b]3123      STATUS         : RTEMS.STATUS_CODES;
3124   begin
3125
[c1ef834]3126      BUFFER_POINTER := BUFFER'ADDRESS;
[6d4e604b]3127
3128      TEXT_IO.PUT_LINE(
3129         "TA3 - message_queue_receive - Q 1 - WAIT FOREVER"
3130      );
3131      RTEMS.MESSAGE_QUEUE_RECEIVE(
3132         SPTEST.QUEUE_ID( 1 ),
3133         BUFFER_POINTER,
3134         RTEMS.DEFAULT_OPTIONS,
3135         RTEMS.NO_TIMEOUT,
[c1ef834]3136         MESSAGE_SIZE,
[6d4e604b]3137         STATUS
3138      );
3139      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
3140         STATUS,
3141         RTEMS.OBJECT_WAS_DELETED,
3142         "MESSAGE_QUEUE_RECEIVE WAITING TO BE DELETED"
3143      );
3144      TEXT_IO.PUT( "TA3 - message_queue_receive - woke up " );
3145      TEXT_IO.PUT_LINE( "with OBJECT_WAS_DELETED" );
3146
3147      TEXT_IO.PUT_LINE(
3148         "TA3 - task_delete - delete self - SUCCESSFUL"
3149      );
3150      RTEMS.TASK_DELETE( RTEMS.SELF, STATUS );
3151      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_DELETE OF TA3" );
3152
3153   end TASK_3;
3154
3155--PAGE
3156--
3157--  TASK_4
3158--
3159
3160   procedure TASK_4 (
3161      ARGUMENT : in     RTEMS.TASK_ARGUMENT
3162   ) is
3163      STATUS : RTEMS.STATUS_CODES;
3164   begin
3165
3166      RTEMS.RATE_MONOTONIC_CANCEL(
3167         SPTEST.PERIOD_ID( 1 ),
3168         STATUS
3169      );
3170      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
3171         STATUS,
3172         RTEMS.NOT_OWNER_OF_RESOURCE,
3173         "RATE_MONOTONIC_CANCEL NOT THE OWNER"
3174      );
3175      TEXT_IO.PUT_LINE(
3176         "TA4 - rate_monotonic_cancel - NOT_OWNER_OF_RESOURCE"
3177       );
3178
3179      RTEMS.RATE_MONOTONIC_PERIOD(
3180         SPTEST.PERIOD_ID( 1 ),
3181         5,
3182         STATUS
3183      );
3184      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
3185         STATUS,
3186         RTEMS.NOT_OWNER_OF_RESOURCE,
3187         "RATE_MONOTONIC_PERIOD NOT THE OWNER"
3188      );
3189      TEXT_IO.PUT_LINE(
3190         "TA4 - rate_monotonic_period - NOT_OWNER_OF_RESOURCE"
3191      );
3192
3193      TEXT_IO.PUT_LINE(
3194         "TA4 - task_delete - delete self - SUCCESSFUL"
3195      );
3196      RTEMS.TASK_DELETE( RTEMS.SELF, STATUS );
3197      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_DELETE OF TA4" );
3198
3199
3200   end TASK_4;
3201
3202end SPTEST;
Note: See TracBrowser for help on using the repository browser.