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

⟦358c0db93⟧ Ada Source

    Length: 11264 (0x2c00)
    Types: Ada Source
    Notes: 03_class, FILE, R1k_Segment, e3_tag, seg_03bdb8

Derivation

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

E3 Source Code



-- Copyright 1988 Verdix Corporation

------------------------------------------------------------------------------
-- Interface to the passive task data structure and subprograms.
--
-- The compiler emits calls to these subprograms when
-- "pragma passive" is present in task specification.
------------------------------------------------------------------------------
WITH System;
USE System;
WITH V_I_Types;
WITH V_I_Sema;
PACKAGE V_I_Pass IS

   PRAGMA Suppress (All_Checks);
   PRAGMA Suppress (Exception_Tables);
   PRAGMA Not_Elaborated;

   --------------------------------------------------------------------------
   -- Passive task header record built by the compiler
   --------------------------------------------------------------------------
   TYPE Entry_Array IS ARRAY (1 .. 8) OF System.Address;

   TYPE Task_Header IS
      RECORD
         State           : Integer;
         Region          : Integer;
         Static_Priority : Priority;
         Intr_Flag       : Integer;
         Intr_Status     : V_I_Types.Intr_Status_T;
         Sema4           : V_I_Sema.Semaphore_Rec;
         Queue           : V_I_Sema.Semaphore_Rec;
         Entries         : Entry_Array;
      END RECORD;

   --
   -- Offsets for these fields must agree with those used in il_task.c
   --
   FOR Task_Header USE
      RECORD
         State           AT 0  RANGE 0 .. 4 * Storage_Unit - 1;
         Region          AT 4  RANGE 0 .. 4 * Storage_Unit - 1;
         Static_Priority AT 8  RANGE 0 .. 4 * Storage_Unit - 1;
         Intr_Flag       AT 12 RANGE 0 .. 4 * Storage_Unit - 1;
         Intr_Status     AT 16 RANGE 0 .. 4 * Storage_Unit - 1;
         Sema4           AT 20 RANGE 0 .. 20 * Storage_Unit - 1;
         Queue           AT 40 RANGE 0 .. 20 * Storage_Unit - 1;
         Entries         AT 60 RANGE 0 .. 32 * Storage_Unit - 1;
      END RECORD;

   TYPE Task_Header_Ref IS ACCESS Task_Header;


   --------------------------------------------------------------------------
   -- Interrupt entry's ISR header record built by the compiler
   --------------------------------------------------------------------------
   TYPE Isr_Header IS
      RECORD
         Vector_Num      : Integer;
         Entry_Num       : Integer;
         T               : Task_Header_Ref;
         Finish_Accept_A : Address;
      END RECORD;

   --
   -- Offsets for these fields must agree with those used in il_task.c
   --
   FOR Isr_Header USE
      RECORD
         Vector_Num      AT 0  RANGE 0 .. 4 * Storage_Unit - 1;
         Entry_Num       AT 4  RANGE 0 .. 4 * Storage_Unit - 1;
         T               AT 8  RANGE 0 .. 4 * Storage_Unit - 1;
         Finish_Accept_A AT 12 RANGE 0 .. 4 * Storage_Unit - 1;
      END RECORD;

   Pt_Isr_Vector_Num_Off      : CONSTANT := 0;
   Pt_Isr_Entry_Num_Off       : CONSTANT := 4;
   Pt_Isr_T_Off               : CONSTANT := 8;
   Pt_Isr_Finish_Accept_A_Off : CONSTANT := 12;

   TYPE Isr_Header_Ref IS ACCESS Isr_Header;


   --------------------------------------------------------------------------
   -- Subprograms to call/enter a passive task's entry
   --------------------------------------------------------------------------
   FUNCTION Pt_Enter (Entry_Num : Integer; T : Task_Header_Ref) RETURN Address;
   FUNCTION Pt_Cond_Enter
               (Entry_Num : Integer; T : Task_Header_Ref)       RETURN Address;
   FUNCTION Pt_Timed_Enter
               (Timeout : Duration; Entry_Num : Integer; T : Task_Header_Ref)
               RETURN Address;

   --------------------------------------------------------------------------
   -- Subprogam to call/enter a passive task's entry from an ISR
   --------------------------------------------------------------------------
   FUNCTION Pt_Isr_Enter
               (Entry_Num : Integer; T : Task_Header_Ref) RETURN Address;

   --------------------------------------------------------------------------
   -- Subprogram to leave a passive task
   --------------------------------------------------------------------------
   PROCEDURE Pt_Leave (T : Task_Header_Ref);

   --------------------------------------------------------------------------
   -- Subprogram to initialize a passive task
   --------------------------------------------------------------------------
   PROCEDURE Pt_Init (T : Task_Header_Ref);

   --------------------------------------------------------------------------
   -- Interrupt entry's ISR
   --------------------------------------------------------------------------
   PROCEDURE Pt_Isr (I : Isr_Header_Ref);

PRIVATE
   PRAGMA Interface (Ada, Pt_Enter);
   PRAGMA Interface_Name (Pt_Enter, "PT_ENTER");
   PRAGMA Interface (Ada, Pt_Cond_Enter);
   PRAGMA Interface_Name (Pt_Cond_Enter, "PT_COND_ENTER");
   PRAGMA Interface (Ada, Pt_Timed_Enter);
   PRAGMA Interface_Name (Pt_Timed_Enter, "PT_TIMED_ENTER");
   PRAGMA Interface (Ada, Pt_Isr_Enter);
   PRAGMA Interface_Name (Pt_Isr_Enter, "PT_ISR_ENTER");
   PRAGMA Interface (Ada, Pt_Leave);
   PRAGMA Interface_Name (Pt_Leave, "PT_LEAVE");
   PRAGMA Interface (Ada, Pt_Init);
   PRAGMA Interface_Name (Pt_Init, "PT_INIT");
   PRAGMA Interface (Ada, Pt_Isr);
   PRAGMA Interface_Name (Pt_Isr, "PT_ISR");
END V_I_Pass;

E3 Meta Data

    nblk1=a
    nid=0
    hdr6=14
        [0x00] rec0=1d rec1=00 rec2=01 rec3=046
        [0x01] rec0=01 rec1=00 rec2=0a rec3=01e
        [0x02] rec0=19 rec1=00 rec2=02 rec3=03e
        [0x03] rec0=01 rec1=00 rec2=09 rec3=062
        [0x04] rec0=1d rec1=00 rec2=03 rec3=03c
        [0x05] rec0=01 rec1=00 rec2=08 rec3=038
        [0x06] rec0=12 rec1=00 rec2=04 rec3=046
        [0x07] rec0=00 rec1=00 rec2=07 rec3=00c
        [0x08] rec0=17 rec1=00 rec2=05 rec3=012
        [0x09] rec0=05 rec1=00 rec2=06 rec3=000
    tail 0x21739b9068565745933e3 0x489e0066482863c01