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

⟦dbcacaff9⟧ Ada Source

    Length: 4096 (0x1000)
    Types: Ada Source
    Notes: 03_class, FILE, R1k_Segment, e3_tag, package Scheduler, seg_0213e1

Derivation

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

E3 Source Code



-- -------------------------------------------------------------------------
-- 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

    type Task_Id is new Boolean; -- Bogus Declaration

    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;

E3 Meta Data

    nblk1=3
    nid=0
    hdr6=6
        [0x00] rec0=1c rec1=00 rec2=01 rec3=01c
        [0x01] rec0=1f rec1=00 rec2=02 rec3=068
        [0x02] rec0=0d rec1=00 rec2=03 rec3=000
    tail 0x2151cbc12838d738f0db9 0x42a00088462060003