-- --**************************************************************************** --* * --* Copyright (c) 2001 * --* by DIGITAL Equipment Corporation, Maynard, Mass. * --* * --* This software is furnished under a license and may be used and copied * --* only in accordance with the terms of such license and with the * --* inclusion of the above copyright notice. This software or any other * --* copies thereof may not be provided or otherwise made available to any * --* other person. No title to and ownership of the software is hereby * --* transferred. * --* * --* The information in this software is subject to change without notice * --* and should not be construed as a commitment by DIGITAL Equipment * --* Corporation. * --* * --* DIGITAL assumes no responsibility for the use or reliability of its * --* software on equipment which is not supplied by DIGITAL. * --* * --**************************************************************************** --******************************************************************************************************************** -- Created: 15-MAR-2001 22:52:29 by OpenVMS SDL EV1-33 -- Source: 2-SEP-1989 10:43:06 $11$DUA933:[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 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 : UNSIGNED_LONGWORD; -- ADDRESS OF FIRST FREE PAGE -- IN THIS (IMAGE OR PROCESS) -- I/O SEGMENT IOSEGLEN : UNSIGNED_LONGWORD; -- ! OF FREE BYTES AT ABOVE ADDR FREEPGLH : UNSIGNED_LONGWORD_ARRAY (1 .. 2); -- FREE PAGE LIST HEAD SAVED_SP : UNSIGNED_LONGWORD; -- SAVED VALUE OF SP AT ENTRY IFABTBL : UNSIGNED_LONGWORD; -- IFAB TABLE ADDR IRABTBL : UNSIGNED_LONGWORD; -- IRAB TABLE ADDR ENTPERSEG : UNSIGNED_WORD; -- ! OF SLOTS PER TABLE SEGMENT NUM_IFABS : UNSIGNED_WORD; -- NUMBER OF IFABS & IRABS CURRENTLY ALLOCATED IFBTBLINK : UNSIGNED_LONGWORD; -- START OF IFAB TABLE (LINK TO NEXT SEGMENT) FILLER_2 : UNSIGNED_LONGWORD_ARRAY (1 .. 15); -- FIRST IFAB TABLE SEGMENT IRBTBLINK : UNSIGNED_LONGWORD; -- 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; IFBTBLINK at 36 range 0 .. 31; FILLER_2 at 40 range 0 .. 479; IRBTBLINK at 100 range 0 .. 31; end record; for IMP_TYPE'SIZE use 832; IMP_TYPE_INIT : constant IMP_TYPE := ( RMSSTATUS => IMP_RMSSTATUS_TYPE_INIT, PROT => 0, FILLER_1 => 0, IOSEGADDR => 0, IOSEGLEN => 0, FREEPGLH => (others => 0), SAVED_SP => 0, IFABTBL => 0, IRABTBL => 0, ENTPERSEG => 0, NUM_IFABS => 0, IFBTBLINK => 0, FILLER_2 => (others => 0), IRBTBLINK => 0); end IMPDEF;