--******************************************************************************************************************** -- Created: 30-Mar-2010 17:01:46 by OpenVMS SDL EV3-3 -- Source: 08-MAR-2000 09:35:41 $1$DGA7274:[STARLET_ADA.LIS]CAPDEF.SDL;1 --******************************************************************************************************************** with SYSTEM; use SYSTEM; with STARLET; use STARLET; with CONDITION_HANDLING; use CONDITION_HANDLING; package CAPDEF is -- module $CAPDEF --+ CAP_K_ALL_USER : constant := -1; CAP_K_ALL_USER_ADD : constant := -1; CAP_K_ALL_CPU_ADD : constant := -1; CAP_K_ALL_ACTIVE_CPUS : constant := -1; CAP_K_ALL_USER_REMOVE : constant := 0; CAP_K_ALL_CPU_REMOVE : constant := 0; CAP_K_GET_FREE_CAP : constant := 0; -- -- Constants defining user capability numbers -- CAP_M_USER1 : constant := 16#00000001#; CAP_M_USER2 : constant := 16#00000002#; CAP_M_USER3 : constant := 16#00000004#; CAP_M_USER4 : constant := 16#00000008#; CAP_M_USER5 : constant := 16#00000010#; CAP_M_USER6 : constant := 16#00000020#; CAP_M_USER7 : constant := 16#00000040#; CAP_M_USER8 : constant := 16#00000080#; CAP_M_USER9 : constant := 16#00000100#; CAP_M_USER10 : constant := 16#00000200#; CAP_M_USER11 : constant := 16#00000400#; CAP_M_USER12 : constant := 16#00000800#; CAP_M_USER13 : constant := 16#00001000#; CAP_M_USER14 : constant := 16#00002000#; CAP_M_USER15 : constant := 16#00004000#; CAP_M_USER16 : constant := 16#00008000#; type CAP_TYPE is record USER1 : BOOLEAN; USER2 : BOOLEAN; USER3 : BOOLEAN; USER4 : BOOLEAN; USER5 : BOOLEAN; USER6 : BOOLEAN; USER7 : BOOLEAN; USER8 : BOOLEAN; USER9 : BOOLEAN; USER10 : BOOLEAN; USER11 : BOOLEAN; USER12 : BOOLEAN; USER13 : BOOLEAN; USER14 : BOOLEAN; USER15 : BOOLEAN; USER16 : BOOLEAN; FILLER_1 : UNSIGNED_16; end record; for CAP_TYPE use record USER1 at 0 range 0 .. 0; USER2 at 0 range 1 .. 1; USER3 at 0 range 2 .. 2; USER4 at 0 range 3 .. 3; USER5 at 0 range 4 .. 4; USER6 at 0 range 5 .. 5; USER7 at 0 range 6 .. 6; USER8 at 0 range 7 .. 7; USER9 at 1 range 0 .. 0; USER10 at 1 range 1 .. 1; USER11 at 1 range 2 .. 2; USER12 at 1 range 3 .. 3; USER13 at 1 range 4 .. 4; USER14 at 1 range 5 .. 5; USER15 at 1 range 6 .. 6; USER16 at 1 range 7 .. 7; FILLER_1 at 2 range 0 .. 15; end record; for CAP_TYPE'SIZE use 32; CAP_TYPE_INIT : constant CAP_TYPE := (USER1 => FALSE, USER2 => FALSE, USER3 => FALSE, USER4 => FALSE, USER5 => FALSE, USER6 => FALSE, USER7 => FALSE, USER8 => FALSE, USER9 => FALSE, USER10 => FALSE, USER11 => FALSE, USER12 => FALSE, USER13 => FALSE, USER14 => FALSE, USER15 => FALSE, USER16 => FALSE, FILLER_1 => 0); type CAP_TYPE is record CAP : CAP_TYPE; end record; for CAP_TYPE use record CAP at 0 range 0 .. 31; end record; for CAP_TYPE'SIZE use 32; CAP_TYPE_INIT : constant CAP_TYPE := ( CAP => CAP_TYPE_INIT ); -- -- Constants defining user CPU numbers -- CAP_M_CPU0 : constant := 16#00000001#; CAP_M_CPU1 : constant := 16#00000002#; CAP_M_CPU2 : constant := 16#00000004#; CAP_M_CPU3 : constant := 16#00000008#; CAP_M_CPU4 : constant := 16#00000010#; CAP_M_CPU5 : constant := 16#00000020#; CAP_M_CPU6 : constant := 16#00000040#; CAP_M_CPU7 : constant := 16#00000080#; CAP_M_CPU8 : constant := 16#00000100#; CAP_M_CPU9 : constant := 16#00000200#; CAP_M_CPU10 : constant := 16#00000400#; CAP_M_CPU11 : constant := 16#00000800#; CAP_M_CPU12 : constant := 16#00001000#; CAP_M_CPU13 : constant := 16#00002000#; CAP_M_CPU14 : constant := 16#00004000#; CAP_M_CPU15 : constant := 16#00008000#; CAP_M_CPU16 : constant := 16#00010000#; CAP_M_CPU17 : constant := 16#00020000#; CAP_M_CPU18 : constant := 16#00040000#; CAP_M_CPU19 : constant := 16#00080000#; CAP_M_CPU20 : constant := 16#00100000#; CAP_M_CPU21 : constant := 16#00200000#; CAP_M_CPU22 : constant := 16#00400000#; CAP_M_CPU23 : constant := 16#00800000#; CAP_M_CPU24 : constant := 16#01000000#; CAP_M_CPU25 : constant := 16#02000000#; CAP_M_CPU26 : constant := 16#04000000#; CAP_M_CPU27 : constant := 16#08000000#; CAP_M_CPU28 : constant := 16#10000000#; CAP_M_CPU29 : constant := 16#20000000#; CAP_M_CPU30 : constant := 16#40000000#; CAP_M_CPU31 : constant := 16#80000000#; type CAP_CPUS_TYPE is record CPU0 : BOOLEAN; CPU1 : BOOLEAN; CPU2 : BOOLEAN; CPU3 : BOOLEAN; CPU4 : BOOLEAN; CPU5 : BOOLEAN; CPU6 : BOOLEAN; CPU7 : BOOLEAN; CPU8 : BOOLEAN; CPU9 : BOOLEAN; CPU10 : BOOLEAN; CPU11 : BOOLEAN; CPU12 : BOOLEAN; CPU13 : BOOLEAN; CPU14 : BOOLEAN; CPU15 : BOOLEAN; CPU16 : BOOLEAN; CPU17 : BOOLEAN; CPU18 : BOOLEAN; CPU19 : BOOLEAN; CPU20 : BOOLEAN; CPU21 : BOOLEAN; CPU22 : BOOLEAN; CPU23 : BOOLEAN; CPU24 : BOOLEAN; CPU25 : BOOLEAN; CPU26 : BOOLEAN; CPU27 : BOOLEAN; CPU28 : BOOLEAN; CPU29 : BOOLEAN; CPU30 : BOOLEAN; CPU31 : BOOLEAN; end record; for CAP_CPUS_TYPE use record CPU0 at 0 range 0 .. 0; CPU1 at 0 range 1 .. 1; CPU2 at 0 range 2 .. 2; CPU3 at 0 range 3 .. 3; CPU4 at 0 range 4 .. 4; CPU5 at 0 range 5 .. 5; CPU6 at 0 range 6 .. 6; CPU7 at 0 range 7 .. 7; CPU8 at 1 range 0 .. 0; CPU9 at 1 range 1 .. 1; CPU10 at 1 range 2 .. 2; CPU11 at 1 range 3 .. 3; CPU12 at 1 range 4 .. 4; CPU13 at 1 range 5 .. 5; CPU14 at 1 range 6 .. 6; CPU15 at 1 range 7 .. 7; CPU16 at 2 range 0 .. 0; CPU17 at 2 range 1 .. 1; CPU18 at 2 range 2 .. 2; CPU19 at 2 range 3 .. 3; CPU20 at 2 range 4 .. 4; CPU21 at 2 range 5 .. 5; CPU22 at 2 range 6 .. 6; CPU23 at 2 range 7 .. 7; CPU24 at 3 range 0 .. 0; CPU25 at 3 range 1 .. 1; CPU26 at 3 range 2 .. 2; CPU27 at 3 range 3 .. 3; CPU28 at 3 range 4 .. 4; CPU29 at 3 range 5 .. 5; CPU30 at 3 range 6 .. 6; CPU31 at 3 range 7 .. 7; end record; for CAP_CPUS_TYPE'SIZE use 32; CAP_CPUS_TYPE_INIT : constant CAP_CPUS_TYPE := (CPU0 => FALSE, CPU1 => FALSE, CPU2 => FALSE, CPU3 => FALSE, CPU4 => FALSE, CPU5 => FALSE, CPU6 => FALSE, CPU7 => FALSE, CPU8 => FALSE, CPU9 => FALSE, CPU10 => FALSE, CPU11 => FALSE, CPU12 => FALSE, CPU13 => FALSE, CPU14 => FALSE, CPU15 => FALSE, CPU16 => FALSE, CPU17 => FALSE, CPU18 => FALSE, CPU19 => FALSE, CPU20 => FALSE, CPU21 => FALSE, CPU22 => FALSE, CPU23 => FALSE, CPU24 => FALSE, CPU25 => FALSE, CPU26 => FALSE, CPU27 => FALSE, CPU28 => FALSE, CPU29 => FALSE, CPU30 => FALSE, CPU31 => FALSE); type CAP_CPUS_TYPE is record CAP_CPUS : CAP_CPUS_TYPE; end record; for CAP_CPUS_TYPE use record CAP_CPUS at 0 range 0 .. 31; end record; for CAP_CPUS_TYPE'SIZE use 32; CAP_CPUS_TYPE_INIT : constant CAP_CPUS_TYPE := ( CAP_CPUS => CAP_CPUS_TYPE_INIT ); CAP_M_IMPLICIT_AFFINITY_CLEAR : constant := 16#00000001#; CAP_M_IMPLICIT_AFFINITY_SET : constant := 16#00000002#; CAP_M_IMPLICIT_DEFAULT_ONLY : constant := 16#00000004#; CAP_M_IMPLICIT_ALL_THREADS : constant := 16#00000008#; type CAP_IMP_FLAGS_TYPE is record IMPLICIT_AFFINITY_CLEAR : BOOLEAN; -- Shut implicit affinity off IMPLICIT_AFFINITY_SET : BOOLEAN; -- Turn implicit affinity on IMPLICIT_DEFAULT_ONLY : BOOLEAN; -- Only system default changed IMPLICIT_ALL_THREADS : BOOLEAN; -- Change affects all kernel threads in process FILLER_1 : UNSIGNED_4; end record; for CAP_IMP_FLAGS_TYPE use record IMPLICIT_AFFINITY_CLEAR at 0 range 0 .. 0; IMPLICIT_AFFINITY_SET at 0 range 1 .. 1; IMPLICIT_DEFAULT_ONLY at 0 range 2 .. 2; IMPLICIT_ALL_THREADS at 0 range 3 .. 3; FILLER_1 at 0 range 4 .. 7; end record; for CAP_IMP_FLAGS_TYPE'SIZE use 8; CAP_IMP_FLAGS_TYPE_INIT : constant CAP_IMP_FLAGS_TYPE := (IMPLICIT_AFFINITY_CLEAR => FALSE, IMPLICIT_AFFINITY_SET => FALSE, IMPLICIT_DEFAULT_ONLY => FALSE, IMPLICIT_ALL_THREADS => FALSE, FILLER_1 => 0); type CAP_IMP_FLAGS_TYPE is record IMP_FLAGS : CAP_IMP_FLAGS_TYPE; end record; for CAP_IMP_FLAGS_TYPE use record IMP_FLAGS at 0 range 0 .. 7; end record; for CAP_IMP_FLAGS_TYPE'SIZE use 8; CAP_IMP_FLAGS_TYPE_INIT : constant CAP_IMP_FLAGS_TYPE := ( IMP_FLAGS => CAP_IMP_FLAGS_TYPE_INIT); -- -- Note: the following flags structure must mimic that of [LIB]CPBDEF.SDL -- CAP_M_FLAG_CHECK_CPU : constant := 16#00000001#; CAP_M_FLAG_PERMANENT : constant := 16#00000002#; CAP_M_FLAG_CHECK_CPU_ACTIVE : constant := 16#00000008#; CAP_M_FLAG_DEFAULT_ONLY : constant := 16#00000010#; CAP_M_ALL_THREADS : constant := 16#00000020#; CAP_M_PURGE_WS_IF_NEW_RAD : constant := 16#00000040#; type CAP_FLAGS_TYPE is record FLAG_CHECK_CPU : BOOLEAN; -- Check that process can run FLAG_PERMANENT : BOOLEAN; -- Affect permanent mask FILLER_1 : BOOLEAN; -- Filler to match $CPBDEF FLAG_CHECK_CPU_ACTIVE : BOOLEAN; -- Check all selected CPUs active FLAG_DEFAULT_ONLY : BOOLEAN; -- Only system default changed ALL_THREADS : BOOLEAN; -- Change affects all kernel threads in process PURGE_WS_IF_NEW_RAD : BOOLEAN; -- If the home RAD was changed, purge the working set FILLER_2 : BOOLEAN; end record; for CAP_FLAGS_TYPE use record FLAG_CHECK_CPU at 0 range 0 .. 0; FLAG_PERMANENT at 0 range 1 .. 1; FILLER_1 at 0 range 2 .. 2; FLAG_CHECK_CPU_ACTIVE at 0 range 3 .. 3; FLAG_DEFAULT_ONLY at 0 range 4 .. 4; ALL_THREADS at 0 range 5 .. 5; PURGE_WS_IF_NEW_RAD at 0 range 6 .. 6; FILLER_2 at 0 range 7 .. 7; end record; for CAP_FLAGS_TYPE'SIZE use 8; CAP_FLAGS_TYPE_INIT : constant CAP_FLAGS_TYPE := (FLAG_CHECK_CPU => FALSE, FLAG_PERMANENT => FALSE, FILLER_1 => FALSE, FLAG_CHECK_CPU_ACTIVE => FALSE, FLAG_DEFAULT_ONLY => FALSE, ALL_THREADS => FALSE, PURGE_WS_IF_NEW_RAD => FALSE, FILLER_2 => FALSE); type CAP_FLAGS_TYPE is record CAP_FLAGS : CAP_FLAGS_TYPE; end record; for CAP_FLAGS_TYPE use record CAP_FLAGS at 0 range 0 .. 7; end record; for CAP_FLAGS_TYPE'SIZE use 8; CAP_FLAGS_TYPE_INIT : constant CAP_FLAGS_TYPE := ( CAP_FLAGS => CAP_FLAGS_TYPE_INIT); end CAPDEF;