--******************************************************************************************************************** -- Created: 9-Mar-2021 22:28:34 by OpenVMS SDL EV3-3 -- Source: 22-FEB-2002 12:26:41 $1$DGA8085:[LIB_ADA.LIS]RIGHTSDEF.SDL;1 --******************************************************************************************************************** with SYSTEM; use SYSTEM; with STARLET; use STARLET; with CONDITION_HANDLING; use CONDITION_HANDLING; package RIGHTSDEF is -- module $RIGHTSDEF -- -- RightsList structure definitions -- ID_K_LENGTH : constant := 8; -- Length of ID$ structure type ID_TYPE is record VALUE : UNSIGNED_LONGWORD; -- Binary identifier value FLAGS : UNSIGNED_LONGWORD; -- Flags associated with identifier end record; for ID_TYPE use record VALUE at 0 range 0 .. 31; FLAGS at 4 range 0 .. 31; end record; for ID_TYPE'SIZE use 64; ID_TYPE_INIT : constant ID_TYPE := (VALUE => 0, FLAGS => 0); type RIGHTS_TYPE is record FLINK : ADDRESS; -- Standard listhead forward link BLINK : ADDRESS; -- Standard listhead backward link SIZE : UNSIGNED_WORD; -- Standard structure size, in bytes TYP : UNSIGNED_BYTE; -- Standard type code for RIGHTS (DYN$C_SECURITY) SUBTYP : UNSIGNED_BYTE; -- Standard subtype code (DYN$C_SECURITY_RIGHTS) DEBUG_FLINK : ADDRESS; -- Forward link to next Rightslist in system (DEBUG) DEBUG_BLINK : ADDRESS; -- Backward link to next Rightslist in system (DEBUG) DEBUG_PID : UNSIGNED_LONGWORD; -- PID of process which allocated this PCB (DEBUG) REFCOUNT : UNSIGNED_LONGWORD; -- ID_COUNT : UNSIGNED_LONGWORD; -- Number of identifiers that array can hold ID_USED : UNSIGNED_LONGWORD; -- Number of identifiers currently stored in array -- -- The following two locations must be kept adjacent, as they are -- treated as a descriptor that points at the rights data -- ID_LENGTH : UNSIGNED_LONGWORD; -- Number of bytes taken up by ID_USED ID_ARRAY : ADDRESS; -- Address of identifier array IDENTIFIERS : STRING(1 .. 0); -- Offset to first rights entry FILLER_1 : UNSIGNED_BYTE_ARRAY (0 .. 3); end record; for RIGHTS_TYPE use record FLINK at 0 range 0 .. 31; BLINK at 4 range 0 .. 31; SIZE at 8 range 0 .. 15; TYP at 10 range 0 .. 7; SUBTYP at 11 range 0 .. 7; DEBUG_FLINK at 12 range 0 .. 31; DEBUG_BLINK at 16 range 0 .. 31; DEBUG_PID at 20 range 0 .. 31; REFCOUNT at 24 range 0 .. 31; ID_COUNT at 28 range 0 .. 31; ID_USED at 32 range 0 .. 31; ID_LENGTH at 36 range 0 .. 31; ID_ARRAY at 40 range 0 .. 31; IDENTIFIERS at 44 range 0 .. -1; FILLER_1 at 44 range 0 .. 31; end record; for RIGHTS_TYPE'SIZE use 384; RIGHTS_TYPE_INIT : constant RIGHTS_TYPE := (FLINK => ADDRESS_ZERO, BLINK => ADDRESS_ZERO, SIZE => 0, TYP => 0, SUBTYP => 0, DEBUG_FLINK => ADDRESS_ZERO, DEBUG_BLINK => ADDRESS_ZERO, DEBUG_PID => 0, REFCOUNT => 0, ID_COUNT => 0, ID_USED => 0, ID_LENGTH => 0, ID_ARRAY => ADDRESS_ZERO, IDENTIFIERS => (others => ASCII.NUL), FILLER_1 => (others => 0)); RIGHTS_K_LENGTH : constant := 48; -- Length of RIGHTS$ structure -- -- The following constants are assigned values chosen for no -- reason other than they seemed appropriate at the time. -- RIGHTS_K_INITIAL_IDENTIFIERS : constant := 16; -- Initial allocation RIGHTS_K_COUNT_IDENTIFIERS : constant := 64; -- expantion allocation RIGHTS_K_MAX_IDENTIFIERS : constant := 528; end RIGHTSDEF;