--******************************************************************************************************************** -- Created: 9-Mar-2021 22:28:16 by OpenVMS SDL EV3-3 -- Source: 17-MAR-1995 07:57:57 $1$DGA8085:[LIB_ADA.LIS]ARBDEF.SDL;1 --******************************************************************************************************************** with SYSTEM; use SYSTEM; with STARLET; use STARLET; with CONDITION_HANDLING; use CONDITION_HANDLING; package ARBDEF is -- module $ARBDEF --+ -- -- Access Rights Block - structure defining process access rights and -- privileges. Currently part of the PCB (meaning that the size of the -- ARB declared here must track in the PCB). -- --- ARB_C_HEADER : constant := 52; -- Length of header ARB_K_HEADER : constant := 52; -- Length of header ARB_K_LENGTH : constant := 124; -- Structure length ARB_C_LENGTH : constant := 124; -- Structure length ARB_S_ARBDEF : constant := 124; type ARB_CLASS_TYPE is -- Security classification mask record FILLER_1 : UNSIGNED_LONGWORD_ARRAY (1 .. 5); end record; for ARB_CLASS_TYPE use record FILLER_1 at 0 range 0 .. 159; end record; for ARB_CLASS_TYPE'SIZE use 160; ARB_CLASS_TYPE_INIT : constant ARB_CLASS_TYPE := (FILLER_1 => (others => 0)); type ARB_RIGHTSLIST_COMPONENT_TYPE is -- Rights list descriptors record PROCESS : ADDRESS; -- process rights SYSTEM : ADDRESS; -- system rights EXTENDED : ADDRESS; -- extended process rights IMAGE : ADDRESS; -- image rights RESERVED : ADDRESS; -- reserved end record; for ARB_RIGHTSLIST_COMPONENT_TYPE use record PROCESS at 0 range 0 .. 31; SYSTEM at 4 range 0 .. 31; EXTENDED at 8 range 0 .. 31; IMAGE at 12 range 0 .. 31; RESERVED at 16 range 0 .. 31; end record; for ARB_RIGHTSLIST_COMPONENT_TYPE'SIZE use 160; ARB_RIGHTSLIST_COMPONENT_TYPE_INIT : constant ARB_RIGHTSLIST_COMPONENT_TYPE := (PROCESS => ADDRESS_ZERO, SYSTEM => ADDRESS_ZERO, EXTENDED => ADDRESS_ZERO, IMAGE => ADDRESS_ZERO, RESERVED => ADDRESS_ZERO); TYPE ARB_RIGHTSLIST_TYPE is ARRAY (1 .. 5) of ARB_RIGHTSLIST_COMPONENT_TYPE; ARB_RIGHTSLIST_TYPE_INIT : constant ARB_RIGHTSLIST_TYPE := ( others => ARB_RIGHTSLIST_COMPONENT_TYPE_INIT); type ARB_RIGHTSDESC_TYPE is -- Descriptor for local rights list record FILLER_1 : UNSIGNED_LONGWORD_ARRAY (1 .. 2); end record; for ARB_RIGHTSDESC_TYPE use record FILLER_1 at 0 range 0 .. 63; end record; for ARB_RIGHTSDESC_TYPE'SIZE use 64; ARB_RIGHTSDESC_TYPE_INIT : constant ARB_RIGHTSDESC_TYPE := (FILLER_1 => (others => 0)); type ARB_UIC_TYPE is -- Process UID record MEM : UNSIGNED_WORD; -- Member number GRP : UNSIGNED_WORD; -- Group number end record; for ARB_UIC_TYPE use record MEM at 0 range 0 .. 15; GRP at 2 range 0 .. 15; end record; for ARB_UIC_TYPE'SIZE use 32; ARB_UIC_TYPE_INIT : constant ARB_UIC_TYPE := (MEM => 0, GRP => 0); type ARB_LOCALRIGHTS_TYPE is -- Process local rights list record UIC : ARB_UIC_TYPE; -- Process UID FILLER_1 : UNSIGNED_LONGWORD_ARRAY (1 .. 15); end record; for ARB_LOCALRIGHTS_TYPE use record UIC at 0 range 0 .. 31; FILLER_1 at 4 range 0 .. 479; end record; for ARB_LOCALRIGHTS_TYPE'SIZE use 512; ARB_LOCALRIGHTS_TYPE_INIT : constant ARB_LOCALRIGHTS_TYPE := ( UIC => ARB_UIC_TYPE_INIT, FILLER_1 => (others => 0)); type ARB_TYPE is record PRIV : UNSIGNED_QUADWORD; -- Privilege mask SIZE : UNSIGNED_WORD; -- Structure size TYP : UNSIGNED_BYTE; -- Structure type FLAGS : UNSIGNED_BYTE; -- ARB flags (unused) CLASS : ARB_CLASS_TYPE; -- Security classification mask RIGHTSLIST : ARB_RIGHTSLIST_COMPONENT_TYPE; -- Rights list descriptors RIGHTSDESC : ARB_RIGHTSDESC_TYPE; -- Descriptor for local rights list LOCALRIGHTS : ARB_LOCALRIGHTS_TYPE; -- Process local rights list end record; for ARB_TYPE use record PRIV at 0 range 0 .. 63; SIZE at 8 range 0 .. 15; TYP at 10 range 0 .. 7; FLAGS at 11 range 0 .. 7; CLASS at 12 range 0 .. 159; RIGHTSLIST at 32 range 0 .. 159; RIGHTSDESC at 52 range 0 .. 63; LOCALRIGHTS at 60 range 0 .. 511; end record; for ARB_TYPE'SIZE use 992; ARB_TYPE_INIT : constant ARB_TYPE := (PRIV => (0, 0), SIZE => 0, TYP => 0, FLAGS => 0, CLASS => ARB_CLASS_TYPE_INIT, RIGHTSLIST => ARB_RIGHTSLIST_COMPONENT_TYPE_INIT, RIGHTSDESC => ARB_RIGHTSDESC_TYPE_INIT, LOCALRIGHTS => ARB_LOCALRIGHTS_TYPE_INIT); end ARBDEF;