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

⟦1ca17cab7⟧ TextFile

    Length: 2001 (0x7d1)
    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« 
        └─⟦be7bcc079⟧ 
            └─⟦this⟧ 

TextFile

-- -------------------------------------------------------------------------
-- CIFO HAL/S scheduling package.
-- See CIFO section titled "Synchronous and Asynchronous Task Scheduling",
-- or chapter 12 of "Programming in HAL/S" by Ryer.
-- -------------------------------------------------------------------------

with TASK_IDS, DYNAMIC_PRIORITIES, EVENT_MANAGEMENT, CALENDAR;
use  TASK_IDS, DYNAMIC_PRIORITIES, EVENT_MANAGEMENT, CALENDAR;

package SCHEDULER is

   TASK_OVERRUN : EVENT;

   type TASK_INITIATIONS is (IMMEDIATELY, AT_TIME, AFTER_DELAY, ON_EVENT);

   type TASK_REPETITIONS is (NONE, REPEAT_EVERY, REPEAT_AFTER);

   type TASK_COMPLETIONS is (NONE, UNTIL_TIME, WHILE_EVENT, UNTIL_EVENT);

   type INITIATION_INFO (INITIATION : TASK_INITIATIONS := IMMEDIATELY) is record
      case INITIATION is
	 when IMMEDIATELY =>
	    null;
	 when AT_TIME =>
	    T : TIME;
	 when AFTER_DELAY =>
	    D : DURATION;
	 when ON_EVENT =>
	    E : EVENT_EXPRESSION;
      end case;
   end record;

   type REPETITION_INFO (REPETITION : TASK_REPETITIONS := NONE) is record
      case REPETITION is
	 when NONE =>
	    null;
	 when REPEAT_EVERY | REPEAT_AFTER =>
	    D : DURATION;
      end case;
   end record;

   type COMPLETION_INFO (COMPLETION : TASK_COMPLETIONS := NONE) is record
      case COMPLETION is
	 when NONE =>
	    null;
	 when UNTIL_TIME =>
	    T : TIME;
	 when WHILE_EVENT | UNTIL_EVENT =>
	    E : EVENT_EXPRESSION;
      end case;
   end record;

   procedure SCHEDULE (SCHEDULED_TASK : in TASK_ID;
		       REPORT_OVERRUN : in BOOLEAN := FALSE;
                       PRIORITY       : in DYNAMIC_PRIORITIES.PRIORITY;
                       INITIATION     : in INITIATION_INFO;
                       REPETITION     : in REPETITION_INFO;
                       COMPLETION     : in COMPLETION_INFO;
		       OVERRUN        : in EVENT := TASK_OVERRUN);

   procedure WAIT_FOR_SCHEDULE (COMPLETED : out BOOLEAN);

   procedure DESCHEDULE (SCHEDULED_TASK : in TASK_ID);

end SCHEDULER