--******************************************************************************************************************** -- Created: 9-Mar-2021 22:28:33 by OpenVMS SDL EV3-3 -- Source: 20-APR-1993 14:46:44 $1$DGA8085:[LIB_ADA.LIS]PRBDEF.SDL;1 --******************************************************************************************************************** with SYSTEM; use SYSTEM; with STARLET; use STARLET; with CONDITION_HANDLING; use CONDITION_HANDLING; package PRBDEF is -- module $PRBDEF --+ -- -- Protection block definition. The protection block is used to specify -- protection on objects internal to the system (e.g., devices, logical -- name tables, etc.) It is used as input to the EXE$CHECKACCESS routine. -- --- PRB_M_UIC : constant := 16#00000001#; PRB_M_ACL : constant := 16#00000002#; PRB_M_CLASS : constant := 16#00000004#; PRB_M_CLASSMAX : constant := 16#00000008#; PRB_S_PRBDEF : constant := 8; -- type PRB_FLAGS_TYPE is -- Presence flag bits record UIC : BOOLEAN; -- Set for simple UIC protection ACL : BOOLEAN; -- Set for access control list CLASS : BOOLEAN; -- Set for security classification CLASSMAX : BOOLEAN; -- Set for security class range FILLER_1 : UNSIGNED_12; end record; for PRB_FLAGS_TYPE use record UIC at 0 range 0 .. 0; ACL at 0 range 1 .. 1; CLASS at 0 range 2 .. 2; CLASSMAX at 0 range 3 .. 3; FILLER_1 at 0 range 4 .. 15; end record; for PRB_FLAGS_TYPE'SIZE use 16; PRB_FLAGS_TYPE_INIT : constant PRB_FLAGS_TYPE := (UIC => FALSE, ACL => FALSE, CLASS => FALSE, CLASSMAX => FALSE, FILLER_1 => 0); type PRB_TYPE is record FLAGS : PRB_FLAGS_TYPE; -- Presence flag bits PROTECTION : UNSIGNED_WORD; -- SOGW protection mask OWNER : UNSIGNED_LONGWORD; -- Owner UIC -- The remaining items in the protection block are optional and therefore -- do not have fixed offsets. The description given below is for a -- hypothetical fully configured protection block. -- -- ACL quadword; /* ACL listhead -- CLASS structure; /* Classification mask -- FILL_1 long dimension 5 fill; -- end CLASS; -- CLASSMAX structure; /* Maximum class mask for range -- FILL_2 long dimension 5 fill; -- end CLASSMAX; -- end record; for PRB_TYPE use record FLAGS at 0 range 0 .. 15; PROTECTION at 2 range 0 .. 15; OWNER at 4 range 0 .. 31; end record; for PRB_TYPE'SIZE use 64; PRB_TYPE_INIT : constant PRB_TYPE := ( FLAGS => PRB_FLAGS_TYPE_INIT, PROTECTION => 0, OWNER => 0); end PRBDEF;