--******************************************************************************************************************** -- Created: 9-Mar-2021 22:28:27 by OpenVMS SDL EV3-3 -- Source: 02-JAN-2002 15:17:28 $1$DGA8085:[LIB_ADA.LIS]IMPDEF.SDL;1 --******************************************************************************************************************** with SYSTEM; use SYSTEM; with STARLET; use STARLET; with CONDITION_HANDLING; use CONDITION_HANDLING; package IMPDEF is -- module $IMPDEF --+ -- RMS32 IMPURE AREA OFFSET DEFINITIONS -- --- IMP_C_ASYEFN : constant := 30; -- EFN FOR ASYNC WAITS IMP_C_IOREFN : constant := 30; -- EFN FOR IO RUNDOWN SYNCHRONIZATION IMP_C_ASYQIOEFN : constant := 31; -- EFN FOR ASYNC QIOS IMP_C_SYNCEFN : constant := 27; -- BASE EFN FOR SYNCHRONOUS QIO'S -- (28, 29 ALSO USED) IMP_C_MBXEFN : constant := 26; -- EFN FOR QIOS TO NETWORK MAILBOXES -- IMP_C_NPIOFILES : constant := 63; -- ! OF PIO SEGMENT FILES IMP_C_ENTPERSEG : constant := 15; -- ! OF IIO SEGMENT SLOTS -- PER INDEX TABLE SEGMENT IMP_S_IMPDEF : constant := 112; type IMP_RMSSTATUS_TYPE is -- RMS OVERALL STATUS record IIOS : BOOLEAN; -- SET IF THIS IS THE IMAGE -- I.O SEGMENT AST : BOOLEAN; -- SET IF RUNNING AT EXEC AST LEVEL TEMP1 : BOOLEAN; -- TEMPORARY FLAG TEMP2 : BOOLEAN; -- " IORUNDOWN : BOOLEAN; -- SET IF IO RUNDOWN IN PROGRESS NOP0BUFS : BOOLEAN; -- SET IF RMS USE OF P0 FOR IMAGE I/O DISABLED RUH : BOOLEAN; -- Set if within RMS RU Handler RECOVERY : BOOLEAN; -- SET IF RECOVERY IN PROGRESS RUH_SYNCH : BOOLEAN; -- SET IF RMS IO MUST SYNCH -- WITH THE RU HANDLER FILLER_1 : UNSIGNED_7; end record; for IMP_RMSSTATUS_TYPE use record IIOS at 0 range 0 .. 0; AST at 0 range 1 .. 1; TEMP1 at 0 range 2 .. 2; TEMP2 at 0 range 3 .. 3; IORUNDOWN at 0 range 4 .. 4; NOP0BUFS at 0 range 5 .. 5; RUH at 0 range 6 .. 6; RECOVERY at 0 range 7 .. 7; RUH_SYNCH at 1 range 0 .. 0; FILLER_1 at 1 range 1 .. 7; end record; for IMP_RMSSTATUS_TYPE'SIZE use 16; IMP_RMSSTATUS_TYPE_INIT : constant IMP_RMSSTATUS_TYPE := (IIOS => FALSE, AST => FALSE, TEMP1 => FALSE, TEMP2 => FALSE, IORUNDOWN => FALSE, NOP0BUFS => FALSE, RUH => FALSE, RECOVERY => FALSE, RUH_SYNCH => FALSE, FILLER_1 => 0); type IMP_TYPE is record RMSSTATUS : IMP_RMSSTATUS_TYPE; -- RMS OVERALL STATUS PROT : UNSIGNED_BYTE; -- PROTECTION FOR I/O BUFFER PAGES FILLER_1 : UNSIGNED_BYTE; -- SPARE IOSEGADDR : ADDRESS; -- ADDRESS OF FIRST FREE PAGE -- IN THIS (IMAGE OR PROCESS) -- I/O SEGMENT IOSEGLEN : UNSIGNED_LONGWORD; -- ! OF FREE BYTES AT ABOVE ADDR FREEPGLH : ADDRESS_ARRAY (1 .. 2); -- FREE PAGE LIST HEAD SAVED_SP : UNSIGNED_LONGWORD; -- SAVED VALUE OF SP AT ENTRY IFABTBL : ADDRESS; -- IFAB TABLE ADDR IRABTBL : ADDRESS; -- IRAB TABLE ADDR ENTPERSEG : UNSIGNED_WORD; -- ! OF SLOTS PER TABLE SEGMENT NUM_IFABS : UNSIGNED_WORD; -- NUMBER OF IFABS & IRABS CURRENTLY ALLOCATED ASB_LOOKASIDE_LIST : ADDRESS_ARRAY (1 .. 2); -- ASB LOOKASIDE LIST HEAD IFBTBLINK : ADDRESS; -- START OF IFAB TABLE (LINK TO NEXT SEGMENT) FILLER_2 : UNSIGNED_LONGWORD_ARRAY (1 .. 15); -- FIRST IFAB TABLE SEGMENT IRBTBLINK : ADDRESS; -- START OF IRAB TABLE (LINK TO NEXT SEGMENT) end record; for IMP_TYPE use record RMSSTATUS at 0 range 0 .. 15; PROT at 2 range 0 .. 7; FILLER_1 at 3 range 0 .. 7; IOSEGADDR at 4 range 0 .. 31; IOSEGLEN at 8 range 0 .. 31; FREEPGLH at 12 range 0 .. 63; SAVED_SP at 20 range 0 .. 31; IFABTBL at 24 range 0 .. 31; IRABTBL at 28 range 0 .. 31; ENTPERSEG at 32 range 0 .. 15; NUM_IFABS at 34 range 0 .. 15; ASB_LOOKASIDE_LIST at 36 range 0 .. 63; IFBTBLINK at 44 range 0 .. 31; FILLER_2 at 48 range 0 .. 479; IRBTBLINK at 108 range 0 .. 31; end record; for IMP_TYPE'SIZE use 896; IMP_TYPE_INIT : constant IMP_TYPE := ( RMSSTATUS => IMP_RMSSTATUS_TYPE_INIT, PROT => 0, FILLER_1 => 0, IOSEGADDR => ADDRESS_ZERO, IOSEGLEN => 0, FREEPGLH => (others => ADDRESS_ZERO), SAVED_SP => 0, IFABTBL => ADDRESS_ZERO, IRABTBL => ADDRESS_ZERO, ENTPERSEG => 0, NUM_IFABS => 0, ASB_LOOKASIDE_LIST => (others => ADDRESS_ZERO), IFBTBLINK => ADDRESS_ZERO, FILLER_2 => (others => 0), IRBTBLINK => ADDRESS_ZERO); end IMPDEF;