OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [gcc/] [testsuite/] [ada/] [acats/] [tests/] [c9/] [c95040d.ada] - Blame information for rev 720

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 720 jeremybenn
-- C95040D.ADA
2
 
3
--                             Grant of Unlimited Rights
4
--
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
14
--     to do so.
15
--
16
--                                    DISCLAIMER
17
--
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.
24
--*
25
-- CHECK THAT TASKING_ERROR IS RAISED IN A CALLING
26
-- TASK WHEN THE TASK OWNING THE ENTRY TERMINATES BEFORE RENDEZVOUS
27
-- CAN OCCUR.
28
 
29
-- CHECK THAT RE-RAISING TASKING_ERROR, ONCE TRAPPED IN THE CALLER,
30
-- DOES NOT PROPAGATE OUTSIDE THE TASK BODY.
31
 
32
-- GOM 11/29/84
33
-- JWC 05/14/85
34
-- PWB 02/11/86  CORRECTED CALL TO TEST TO SHOW CORRECT TEST NAME.
35
-- RLB 12/15/99  REMOVED POTENTIALLY ERRONEOUS CALLS TO REPORT.COMMENT.
36
 
37
WITH REPORT;
38
USE REPORT;
39
 
40
PROCEDURE C95040D IS
41
 
42
     PROCEDURE DRIVER IS
43
 
44
          TASK NEST IS
45
               ENTRY OUTER;
46
               ENTRY INNER;
47
          END NEST;
48
 
49
          TASK SLAVE;
50
 
51
          TASK BODY NEST IS
52
          BEGIN
53
               --COMMENT("AT TOP OF 'NEST' TASK WAITING ON 'OUTER' " &
54
               --        "RENDEZVOUS");
55
 
56
               ACCEPT OUTER DO
57
                    --COMMENT("IN 'OUTER' RENDEZVOUS OF 'NEST' TASK " &
58
                    --        "ABOUT TO 'RETURN'");
59
 
60
                    RETURN;  -- CAUSES 'INNER' RENDEZVOUS TO BE SKIPPED.
61
 
62
                    ACCEPT INNER DO
63
                         FAILED("'INNER' RENDEZVOUS OF 'NEST' TASK " &
64
                                "SHOULD NEVER BE PERFORMED");
65
                    END INNER;
66
               END OUTER;
67
 
68
               --COMMENT("'OUTER' RENDEZVOUS COMPLETED IN 'NEST' TASK " &
69
               --        "AND NOW TERMINATING");
70
          END NEST;
71
 
72
          TASK BODY SLAVE IS
73
          BEGIN
74
               --COMMENT("AT TOP OF 'SLAVE' TASK. CALLING 'INNER' " &
75
               --        "RENDEZVOUS");
76
 
77
               NEST.INNER;
78
 
79
               FAILED("SHOULD HAVE RAISED 'TASKING_ERROR' IN 'SLAVE' " &
80
                      "TASK");
81
          EXCEPTION
82
               WHEN TASKING_ERROR =>
83
                    --COMMENT("'SLAVE' TASK CORRECTLY TRAPPING " &
84
                    --        "'TASKING_ERROR' AND RE-RAISING IT (BUT " &
85
                    --        "SHOULD NOT BE PROPAGATED)");
86
                    RAISE;
87
          END SLAVE;
88
 
89
     BEGIN  -- START OF DRIVER PROCEDURE.
90
 
91
          --COMMENT("AT TOP OF 'DRIVER'. CALLING 'OUTER' ENTRY OF " &
92
          --        "'NEST' TASK");
93
 
94
          NEST.OUTER;
95
 
96
          --COMMENT("'OUTER' RENDEZVOUS COMPLETED. 'DRIVER' AWAITING " &
97
          --        "TERMINATION OF 'NEST' AND 'SLAVE' TASKS");
98
 
99
     EXCEPTION
100
          WHEN TASKING_ERROR =>
101
               FAILED("'TASKING_ERROR' CAUGHT IN 'DRIVER' WHEN IT " &
102
                      "SHOULD HAVE BEEN CAUGHT IN 'SLAVE' TASK, OR " &
103
                      "'TASKING_ERROR' WAS INCORRECTLY PROPAGATED BY " &
104
                      "'SLAVE' TASK");
105
     END DRIVER;
106
 
107
BEGIN  -- START OF MAIN PROGRAM.
108
 
109
     TEST("C95040D","CHECK THAT 'TASKING_ERROR' IS RAISED IN A " &
110
                    "CALLER TASK WHEN TASK OWNING THE ENTRY CANNOT " &
111
                    "PERFORM RENDEZVOUS. ALSO CHECK THAT " &
112
                    "'TASKING_ERROR', ONCE RAISED, IS NOT PROPAGATED " &
113
                    "OUTSIDE THE TASK BODY");
114
 
115
     --COMMENT("MAIN PROGRAM CALLING 'DRIVER' PROCEDURE");
116
 
117
     DRIVER;
118
 
119
     --COMMENT("MAIN PROGRAM NOW TERMINATING");
120
 
121
     RESULT;
122
END C95040D;

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.