3 -- Grant of Unlimited Rights
5 -- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
6 -- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
7 -- unlimited rights in the software and documentation contained herein.
8 -- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
9 -- this public release, the Government intends to confer upon all
10 -- recipients unlimited rights equal to those held by the Government.
11 -- These rights include rights to use, duplicate, release or disclose the
12 -- released technical data and computer software in whole or in part, in
13 -- any manner and for any purpose whatsoever, and to have or permit others
18 -- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
19 -- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
20 -- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
21 -- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
22 -- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
23 -- PARTICULAR PURPOSE OF SAID MATERIAL.
25 -- CHECK THAT A TIMED ENTRY CALL THAT IS CANCELED (BECAUSE THE DELAY HAS
26 -- EXPIRED) IS REMOVED FROM THE QUEUE OF THE CALLED TASK'S ENTRY.
31 WITH REPORT
; USE REPORT
;
36 TEST
("C97307A", "CHECK THAT A TIMED ENTRY CALL THAT IS " &
37 "CANCELED (BECAUSE THE DELAY HAS EXPIRED) IS " &
38 "REMOVED FROM THE QUEUE OF THE CALLED TASK'S " &
43 DELAY_TIME
: CONSTANT DURATION := 2 * 60.0 * Impdef
.One_Second
;
47 ENTRY READ
(COUNT
: OUT NATURAL);
50 TASK TYPE NON_TIMED_CALLER
IS
51 ENTRY NAME
(N
: NATURAL);
54 TASK TYPE TIMED_CALLER
IS
55 ENTRY NAME
(N
: NATURAL);
58 CALLER1
: TIMED_CALLER
;
59 CALLER2
: NON_TIMED_CALLER
;
60 CALLER3
: TIMED_CALLER
;
61 CALLER4
: NON_TIMED_CALLER
;
62 CALLER5
: TIMED_CALLER
;
65 ENTRY E
(NAME
: NATURAL);
72 --------------------------------------------------
75 EXPIRED_CALLS
: NATURAL := 0;
80 EXPIRED_CALLS
:= EXPIRED_CALLS
+ 1;
83 ACCEPT READ
(COUNT
: OUT NATURAL) DO
84 COUNT
:= EXPIRED_CALLS
;
92 --------------------------------------------------
94 TASK BODY NON_TIMED_CALLER
IS
97 ACCEPT NAME
(N
: NATURAL) DO
102 END NON_TIMED_CALLER
;
104 --------------------------------------------------
106 TASK BODY TIMED_CALLER
IS
109 ACCEPT NAME
(N
: NATURAL) DO
115 FAILED
("TIMED ENTRY CALL NOT CANCELED FOR CALLER" &
116 NATURAL'IMAGE(MY_NAME
));
123 FAILED
("EXCEPTION RAISED IN TIMED_CALLER -- " &
124 "CALLER" & NATURAL'IMAGE(MY_NAME
));
127 --------------------------------------------------
129 TASK BODY DISPATCH
IS
146 --------------------------------------------------
150 DESIRED_QUEUE_LENGTH
: NATURAL := 1;
151 EXPIRED_CALLS
: NATURAL;
153 ACCEPTED
: ARRAY (1..5) OF NATURAL RANGE 0..5
155 ACCEPTED_INDEX
: NATURAL := 0;
160 EXPIRED
.READ
(EXPIRED_CALLS
);
161 EXIT WHEN E
'COUNT >= DESIRED_QUEUE_LENGTH
-
163 DELAY 2.0 * Impdef
.One_Second
;
165 EXIT WHEN DESIRED_QUEUE_LENGTH
= 5;
167 DESIRED_QUEUE_LENGTH
:= DESIRED_QUEUE_LENGTH
+ 1;
170 -- AT THIS POINT, FIVE TASKS WERE QUEUED.
171 -- LET THE TIMED ENTRY CALLS ISSUED BY CALLER1,
172 -- CALLER3, AND CALLER5 EXPIRE:
174 DELAY DELAY_TIME
+ 10.0 * Impdef
.One_Second
;
176 -- AT THIS POINT, ALL THE TIMED ENTRY CALLS MUST HAVE
177 -- EXPIRED AND BEEN REMOVED FROM THE ENTRY QUEUE FOR E,
178 -- OTHERWISE THE IMPLEMENTATION HAS FAILED THIS TEST.
180 WHILE E
'COUNT > 0 LOOP
181 ACCEPT E
(NAME
: NATURAL) DO
182 ACCEPTED_INDEX
:= ACCEPTED_INDEX
+ 1;
183 ACCEPTED
(ACCEPTED_INDEX
) := NAME
;
187 IF ACCEPTED
/= (2, 4, 0, 0, 0) THEN
188 FAILED
("SOME TIMED CALLS NOT REMOVED FROM ENTRY " &
190 COMMENT
("ORDER ACCEPTED WAS:" &
191 NATURAL'IMAGE (ACCEPTED
(1)) & ',' &
192 NATURAL'IMAGE (ACCEPTED
(2)) & ',' &
193 NATURAL'IMAGE (ACCEPTED
(3)) & ',' &
194 NATURAL'IMAGE (ACCEPTED
(4)) & ',' &
195 NATURAL'IMAGE (ACCEPTED
(5)) );
199 --------------------------------------------------