--******************************************************************************************************************** -- Created: 9-Mar-2021 22:28:26 by OpenVMS SDL EV3-3 -- Source: 22-APR-1993 11:20:18 $1$DGA8085:[LIB_ADA.LIS]IFDDEF.SDL;1 --******************************************************************************************************************** with SYSTEM; use SYSTEM; with STARLET; use STARLET; with CONDITION_HANDLING; use CONDITION_HANDLING; package IFDDEF is -- module $IFDDEF --+ -- IMAGE FILE DESCRIPTOR BLOCK - RETURNED BY IMAGE ACTIVATOR --- IFD_M_EXEONLY : constant := 16#00000001#; IFD_M_PRIV : constant := 16#00000002#; IFD_M_SETVECTOR : constant := 16#00000004#; IFD_K_LENGTH : constant := 28; -- LENGTH OF FIXED AREA OF IFD IFD_C_LENGTH : constant := 28; -- LENGTH OF FIXED AREA OF IFD IFD_S_IFDDEF : constant := 28; type IFD_FLAGS_TYPE is -- IMAGE FILE DESCRIPTOR FLAGS record EXEONLY : BOOLEAN; -- EXECUTE ONLY FILE PRIV : BOOLEAN; -- IMAGE INSTALLED WITH ENHANCED PRIVILEGE SETVECTOR : BOOLEAN; -- PRIVILEGED VECTORS TO BE INSTALLED FILLER_1 : UNSIGNED_13; end record; for IFD_FLAGS_TYPE use record EXEONLY at 0 range 0 .. 0; PRIV at 0 range 1 .. 1; SETVECTOR at 0 range 2 .. 2; FILLER_1 at 0 range 3 .. 15; end record; for IFD_FLAGS_TYPE'SIZE use 16; IFD_FLAGS_TYPE_INIT : constant IFD_FLAGS_TYPE := (EXEONLY => FALSE, PRIV => FALSE, SETVECTOR => FALSE, FILLER_1 => 0); type IFD_TYPE is record SIZE : UNSIGNED_WORD; -- SIZE IN BYTES OF IMAGE FILE DESCRIPTOR FILNAMOFF : UNSIGNED_WORD; -- OFFSET TO ASCIC -- FULLY QUALIFIED FILE SPEC FILLER_1 : UNSIGNED_WORD; -- RESERVED OFFSET 1 FILLER_2 : UNSIGNED_WORD; -- RESERVED OFFSET 2 CHAN : UNSIGNED_WORD; -- CHANNEL ON WHICH IMAGE FILE IS OPEN CMCHAN : UNSIGNED_WORD; -- COMPATIBILITY MODE CHANNEL CMKFIADR : ADDRESS; -- COMPATIBILITY MODE IMAGE -- KNOWN FILE ENTRY ADDRESS OR 0 FLAGS : IFD_FLAGS_TYPE; -- IMAGE FILE DESCRIPTOR FLAGS FILLER_3 : UNSIGNED_WORD; -- SPARE WORD CURPROG : UNSIGNED_QUADWORD; -- STRING DESCRIPTOR FOR -- FULLY QUALIFIED FILE SPEC OF -- RUNNING PROGRAM end record; for IFD_TYPE use record SIZE at 0 range 0 .. 15; FILNAMOFF at 2 range 0 .. 15; FILLER_1 at 4 range 0 .. 15; FILLER_2 at 6 range 0 .. 15; CHAN at 8 range 0 .. 15; CMCHAN at 10 range 0 .. 15; CMKFIADR at 12 range 0 .. 31; FLAGS at 16 range 0 .. 15; FILLER_3 at 18 range 0 .. 15; CURPROG at 20 range 0 .. 63; end record; for IFD_TYPE'SIZE use 224; IFD_TYPE_INIT : constant IFD_TYPE := (SIZE => 0, FILNAMOFF => 0, FILLER_1 => 0, FILLER_2 => 0, CHAN => 0, CMCHAN => 0, CMKFIADR => ADDRESS_ZERO, FLAGS => IFD_FLAGS_TYPE_INIT, FILLER_3 => 0, CURPROG => (0, 0)); end IFDDEF;