--******************************************************************************************************************** -- Created: 9-Mar-2021 22:28:19 by OpenVMS SDL EV3-3 -- Source: 25-FEB-2008 18:27:21 $1$DGA8085:[LIB_ADA.LIS]CTLP1FLAGSDEF.SDL;1 --******************************************************************************************************************** with SYSTEM; use SYSTEM; with STARLET; use STARLET; with CONDITION_HANDLING; use CONDITION_HANDLING; package CTLP1FLAGSDEF is -- module $CTLP1FLAGSDEF -- + -- CTL P1 flags -- -- These are flags in the CTL p1 region to define miscellaneous things. -- There are also some definitions relating to the instruction emulator here. -- - -- -- These reside in the cell CTL$GQ_MISC_P1_FLAGS, defined in SHELL.MAR. -- The byte alignment fillers are present for historical reasons. When -- the adjacent fields were added, $GETJPI was not capable of fetching -- bitfields in CTL structures, so these fields were byte aligned and -- fetched as byte items. Of course, this practice couldn't last and we -- ran out of available bits in the quadword. $GETJPI has been fixed and -- the space in the fillers is available for use. The fillers remain so -- that existing bits do not move. -- CTLP1FLAGS_M_GSD_CLEAN : constant := 16#00000001#; CTLP1FLAGS_M_IPC_CLEAN : constant := 16#00000002#; CTLP1FLAGS_M_PSX_PML : constant := 16#00000004#; CTLP1FLAGS_M_MKTHREADS : constant := 16#00000008#; CTLP1FLAGS_M_UPCALLS : constant := 16#00000010#; CTLP1FLAGS_M_PTHREAD : constant := 16#00000020#; CTLP1FLAGS_M_MEDDLE_ENABLE : constant := 16#00000040#; CTLP1FLAGS_M_MEDDLE : constant := 16#00000080#; CTLP1FLAGS_M_PARSE_STYLE_PERM : constant := 16#00000700#; CTLP1FLAGS_M_SRCH_SYMLINK_PERM : constant := 16#00001800#; CTLP1FLAGS_M_PARSE_STYLE_IMAGE : constant := 16#00070000#; CTLP1FLAGS_M_SRCH_SYMLINK_TEMP : constant := 16#00180000#; CTLP1FLAGS_M_CASE_LOOKUP_PERM : constant := 16#07000000#; CTLP1FLAGS_M_CASE_LOOKUP_IMAGE : constant := 16#00000000#; CTLP1FLAGS_M_UNITS : constant := 16#00000000#; CTLP1FLAGS_M_TOKEN : constant := 16#00000000#; CTLP1FLAGS_S_CTLP1DEF : constant := 8; -- Old size name - synonym type CTLP1_TYPE is record GSD_CLEAN : BOOLEAN; -- GSD clean-up is in progress IPC_CLEAN : BOOLEAN; -- $IPC association clean-up is in progress PSX_PML : BOOLEAN; -- POSIX user stack locked in working set MKTHREADS : BOOLEAN; -- Multiple kernel threads enabled UPCALLS : BOOLEAN; -- Upcalls enabled PTHREAD : BOOLEAN; -- PTHREAD$RTL has been image activated MEDDLE_ENABLE : BOOLEAN; -- Record fact of process logical name & symbol alterations MEDDLE : BOOLEAN; -- Process logical names or symbols have been altered PARSE_STYLE_PERM : UNSIGNED_3; -- Process-permanent parse_style SRCH_SYMLINK_PERM : UNSIGNED_2; -- Process-permanent symlink search mode FILLER_2 : UNSIGNED_3; -- Byte align for historical reasons PARSE_STYLE_IMAGE : UNSIGNED_3; -- Life-of-image parse_style SRCH_SYMLINK_TEMP : UNSIGNED_2; -- Life-of-image symlink search mode FILLER_3 : UNSIGNED_3; -- Byte align for historical reasons CASE_LOOKUP_PERM : UNSIGNED_3; -- Process-permanent case_lookup FILLER_4 : UNSIGNED_5; -- Byte align for historical reasons CASE_LOOKUP_IMAGE : UNSIGNED_3; -- Life-of-image case_lookup FILLER_5 : UNSIGNED_5; -- Byte align for historical reasons UNITS : BOOLEAN; -- Use bytes or blocks FILLER_6 : UNSIGNED_7; -- Byte align for historical reasons TOKEN : BOOLEAN; -- Use small or large tokens FILLER_7 : UNSIGNED_15; -- Available space end record; for CTLP1_TYPE use record GSD_CLEAN at 0 range 0 .. 0; IPC_CLEAN at 0 range 1 .. 1; PSX_PML at 0 range 2 .. 2; MKTHREADS at 0 range 3 .. 3; UPCALLS at 0 range 4 .. 4; PTHREAD at 0 range 5 .. 5; MEDDLE_ENABLE at 0 range 6 .. 6; MEDDLE at 0 range 7 .. 7; PARSE_STYLE_PERM at 1 range 0 .. 2; SRCH_SYMLINK_PERM at 1 range 3 .. 4; FILLER_2 at 1 range 5 .. 7; PARSE_STYLE_IMAGE at 2 range 0 .. 2; SRCH_SYMLINK_TEMP at 2 range 3 .. 4; FILLER_3 at 2 range 5 .. 7; CASE_LOOKUP_PERM at 3 range 0 .. 2; FILLER_4 at 3 range 3 .. 7; CASE_LOOKUP_IMAGE at 4 range 0 .. 2; FILLER_5 at 4 range 3 .. 7; UNITS at 5 range 0 .. 0; FILLER_6 at 5 range 1 .. 7; TOKEN at 6 range 0 .. 0; FILLER_7 at 6 range 1 .. 15; end record; for CTLP1_TYPE'SIZE use 64; CTLP1_TYPE_INIT : constant CTLP1_TYPE := (GSD_CLEAN => FALSE, IPC_CLEAN => FALSE, PSX_PML => FALSE, MKTHREADS => FALSE, UPCALLS => FALSE, PTHREAD => FALSE, MEDDLE_ENABLE => FALSE, MEDDLE => FALSE, PARSE_STYLE_PERM => 0, SRCH_SYMLINK_PERM => 0, FILLER_2 => 0, PARSE_STYLE_IMAGE => 0, SRCH_SYMLINK_TEMP => 0, FILLER_3 => 0, CASE_LOOKUP_PERM => 0, FILLER_4 => 0, CASE_LOOKUP_IMAGE => 0, FILLER_5 => 0, UNITS => FALSE, FILLER_6 => 0, TOKEN => FALSE, FILLER_7 => 0); -- -- The following are the flags that reside in CTL$GQ_EMULATOR_FLAGS -- CTLEMFLAGS_M_REINIT : constant := 16#00000001#; CTLEMFLAGS_M_GET_SIG_COUNT : constant := 16#00000002#; CTLEMFLAGS_M_NO_NEW_IMAGE_RESET : constant := 16#00000004#; CTLEMFLAGS_M_SIGNAL_INNER_MODE : constant := 16#00000008#; CTLEMFLAGS_M_NO_MASK_INIT : constant := 16#00000010#; CTLEMFLAGS_M_NO_SIGNAL_MAX_INIT : constant := 16#00000020#; CTLEMFLAGS_M_NO_PC_RING_INIT : constant := 16#00000040#; CTLEMFLAGS_M_NO_COUNT_INIT : constant := 16#00000080#; type CTLEMFLAGS_TYPE is record REINIT : BOOLEAN; -- A new image started: reinitialize P1 cells GET_SIG_COUNT : BOOLEAN; -- Get the sig count from EMULATE_DATA NO_NEW_IMAGE_RESET : BOOLEAN; -- Inhibit initialization SIGNAL_INNER_MODE : BOOLEAN; -- Signal SS$_EMULATED even for inner mode emulation -- ...(you need a condition handler else SSERVEXC bugcheck) NO_MASK_INIT : BOOLEAN; -- Run init in emulator, but don't init these fields... NO_SIGNAL_MAX_INIT : BOOLEAN; NO_PC_RING_INIT : BOOLEAN; NO_COUNT_INIT : BOOLEAN; -- ...End of "init but" bits FILLER_1 : UNSIGNED_BYTE_ARRAY (0 .. 6); end record; for CTLEMFLAGS_TYPE use record REINIT at 0 range 0 .. 0; GET_SIG_COUNT at 0 range 1 .. 1; NO_NEW_IMAGE_RESET at 0 range 2 .. 2; SIGNAL_INNER_MODE at 0 range 3 .. 3; NO_MASK_INIT at 0 range 4 .. 4; NO_SIGNAL_MAX_INIT at 0 range 5 .. 5; NO_PC_RING_INIT at 0 range 6 .. 6; NO_COUNT_INIT at 0 range 7 .. 7; FILLER_1 at 1 range 0 .. 55; end record; for CTLEMFLAGS_TYPE'SIZE use 64; CTLEMFLAGS_TYPE_INIT : constant CTLEMFLAGS_TYPE := (REINIT => FALSE, GET_SIG_COUNT => FALSE, NO_NEW_IMAGE_RESET => FALSE, SIGNAL_INNER_MODE => FALSE, NO_MASK_INIT => FALSE, NO_SIGNAL_MAX_INIT => FALSE, NO_PC_RING_INIT => FALSE, NO_COUNT_INIT => FALSE, FILLER_1 => (others => 0)); -- -- The following are the flags that reside in the CTL$GQ_EXCEPTION_FLAGS -- CTLEXCFLAGS_M_SIGNAL_ACTIVE : constant := 16#00000001#; type CTLEXCFLAGS_TYPE is record SIGNAL_ACTIVE : BOOLEAN; -- Signal processing is in -- progress FILLER_1 : BIT_ARRAY (0 .. 62); end record; for CTLEXCFLAGS_TYPE use record SIGNAL_ACTIVE at 0 range 0 .. 0; FILLER_1 at 0 range 1 .. 63; end record; for CTLEXCFLAGS_TYPE'SIZE use 64; CTLEXCFLAGS_TYPE_INIT : constant CTLEXCFLAGS_TYPE := (SIGNAL_ACTIVE => FALSE, FILLER_1 => (others => FALSE)); -- -- These constants relate to CTL$GQ_EMULATE_PC_RING -- CTL_C_EMULATE_RING_SIZE : constant := 8; CTL_M_EMULATE_RING_SIZE : constant := 7; -- Mask for valid bits to index ring end CTLP1FLAGSDEF;