DataMuseum.dkPresents historical artifacts from the history of: Rational R1000/400 Tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about Rational R1000/400 Tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - downloadIndex: ┃ T V ┃
Length: 5200 (0x1450) Types: TextFile Names: »V«
└─⟦516dceb10⟧ Bits:30000751 8mm tape, Rational 1000, RCI_VADS └─ ⟦9a14c9417⟧ »DATA« └─⟦this⟧
-- 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;