DataMuseum.dk

Presents historical artifacts from the history of:

Rational R1000/400

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about Rational R1000/400

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦14f8a91fe⟧ TextFile

    Length: 6261 (0x1875)
    Types: TextFile
    Notes: R1k Text-file segment

Derivation

└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000
    └─ ⟦5a81ac88f⟧ »Space Info Vol 1« 
        └─⟦37ad64c9e⟧ 
            └─⟦this⟧ 

TextFile

-- "This unpublished work is protected both as a proprietary work and
-- under the Universal Copyright Convention and the US Copyright Act of
-- 1976. Its distribution and access are limited only to authorized
-- persons. Copr. (c) Alsys. Created 1990, initially licensed 1990.
-- All rights reserved.

-- Unauthorized  use (including use to prepare other works), disclosure,
-- reproduction, or distribution may violate national criminal law."

------------------------------------------------------------------------------
-- This module is a generic template for the EVENT_MANAGEMENT package	    --
-- required by CIFO 3.0, which is obtained by instantiating this generic.   --
------------------------------------------------------------------------------

--	    *********************
--	    * TABLE OF CONTENTS *
--	    *********************

   --	      1. Generic Parameters
   --	      2. User Visible Types
   --	      3. Event Testing
   --	      4. Signal Operations
   --	      5. Event Construction
   --	      6. Wait Operations
   --	      7. IBM SOW Declarations
   --	      13. Instantiations


generic

--	    *************************
--	    * 1. GENERIC PARAMETERS *
--	    *************************

   MAX_EVENTS : INTEGER;
   -- This parameter controls the maximum number of events which can be
   -- handled as part of a single COMPLEX_EVENT value, avoiding additional
   -- heap allocations. The size of a COMPLEX_EVENT depends on this value
   -- since enough space is allocated to hold an expression of this size.

   SIGNAL_MAX_EXCEEDED : BOOLEAN := FALSE;
   -- This parameter controls the behaviour of the system if a complex
   -- expression exceeds the threshhold specified by the MAX_EVENTS value.
   -- If the value of the parameter is FALSE, then storage for at least
   -- part of the complex event structure may be obtained from the heap.
   -- This avoids any limits on the complexity of event expressions, but
   -- can result in storage leaks. If the parameter is TRUE, then an attempt
   -- to build a complex expression exceeding the limit causes the exception
   -- MAX_EVENTS_EXCEEDED to be raised, warning the programmer that the
   -- attempted event construction may lead to storage leaks.


package CIFO_EVENT_MANAGEMENT is

   -- The library contains a standard instantiations of this package:

   -- package EVENT_MANAGEMENT
   --	 is new CIFO_EVENT_MANAGEMENT (MAX_EVENTS => 6,
   --				       SIGNAL_MAX_EXCEEDED => FALSE);

   --	This generates a package which has no limit on the complexity of
   --	complex events, but which uses the heap if the number of events
   --	exceeds 6, and may thus cause storage leaks in these cases.


--	    *************************
--	    * 2. USER VISIBLE TYPES *
--	    *************************

   type EVENT is limited private;
   -- Note: we have deliberately changed this to limited private, since the
   -- semantics of both assignment and comparison of EVENTs is obscure.

   type COMPLEX_EVENT is private;


--	    ********************
--	    * 3. EVENT TESTING *
--	    ********************

   function IS_SET (AN_EVENT	: in EVENT)	    return BOOLEAN;
   function IS_SET (EXPRESSION	: in COMPLEX_EVENT) return BOOLEAN;

      pragma INLINE (IS_SET);


--	    ************************
--	    * 4. SIGNAL OPERATIONS *
--	    ************************

   procedure SET    (TARGET_EVENT : in out EVENT);
   procedure RESET  (TARGET_EVENT : in out EVENT);
   procedure TOGGLE (TARGET_EVENT : in out EVENT);
   procedure PULSE  (TARGET_EVENT : in out EVENT);


--	    *************************
--	    * 5. EVENT CONSTRUCTION *
--	    *************************

   function COMPLEX_EVENT_OF (SIMPLE_EVENT : EVENT)	return COMPLEX_EVENT;

   function "and" (LEFT, RIGHT : EVENT)                 return COMPLEX_EVENT;
   function "and" (LEFT : COMPLEX_EVENT; RIGHT : EVENT) return COMPLEX_EVENT;
   function "and" (LEFT : EVENT; RIGHT : COMPLEX_EVENT) return COMPLEX_EVENT;
   function "and" (LEFT, RIGHT : COMPLEX_EVENT)         return COMPLEX_EVENT;

   function "or"  (LEFT, RIGHT : EVENT)                 return COMPLEX_EVENT;
   function "or"  (LEFT : COMPLEX_EVENT; RIGHT : EVENT) return COMPLEX_EVENT;
   function "or"  (LEFT : EVENT; RIGHT : COMPLEX_EVENT) return COMPLEX_EVENT;
   function "or"  (LEFT, RIGHT : COMPLEX_EVENT)         return COMPLEX_EVENT;

   function "xor" (LEFT, RIGHT : EVENT)                 return COMPLEX_EVENT;
   function "xor" (LEFT : COMPLEX_EVENT; RIGHT : EVENT) return COMPLEX_EVENT;
   function "xor" (LEFT : EVENT; RIGHT : COMPLEX_EVENT) return COMPLEX_EVENT;
   function "xor" (LEFT, RIGHT : COMPLEX_EVENT)         return COMPLEX_EVENT;

   function "not" (AN_EVENT : EVENT)                    return COMPLEX_EVENT;
   function "not" (AN_EVENT : COMPLEX_EVENT)            return COMPLEX_EVENT;

   MAX_EVENTS_EXCEEDED : exception;


--	    **********************
--	    * 6. WAIT OPERATIONS *
--	    **********************

   procedure WAIT_ON	    (AN_EVENT : in COMPLEX_EVENT);

   procedure CANCEL_WAIT_ON (TSK : in TASK_ID);
   -- This procedure is used by the SCHEDULER. It removes a task from the
   -- event structures (if it is currently chained). It is used for functions
   -- such as task abort.


--	    ***************************
--	    * 7. IBM SOW DECLARATIONS *
--	    ***************************

   -- This section contains renamings and additional declarations required
   -- by the IBM statement of work for the Lynx project. This SOW introduces
   -- slightly different names, apparently taken from some intermediate
   -- version of CIFO, between the 2.0 and 3.0 documents.

   subtype EVENT_EXPRESSION is COMPLEX_EVENT;

   function VALUE_OF (AN_EVENT : in COMPLEX_EVENT) return BOOLEAN
      renames IS_SET;

   function EXPRESSION_OF (SIMPLE_EVENT : EVENT) return COMPLEX_EVENT
      renames COMPLEX_EVENT_OF;


   procedure INITIALIZE (TARGET_EVENT : in out EVENT;
			 VALUE	      : in BOOLEAN := FALSE);

      pragma INLINE (INITIALIZE);

end CIFO_EVENT_MANAGEMENT;


--	    **********************
--	    * 13. INSTANTIATIONS *
--	    **********************

with CIFO_EVENT_MANAGEMENT;

package EVENT_MANAGEMENT is
   new CIFO_EVENT_MANAGEMENT (MAX_EVENTS => 6,
			      SIGNAL_MAX_EXCEEDED => FALSE)