-- --**************************************************************************** --* * --* Copyright (c) 2001 * --* by DIGITAL Equipment Corporation, Maynard, Mass. * --* * --* This software is furnished under a license and may be used and copied * --* only in accordance with the terms of such license and with the * --* inclusion of the above copyright notice. This software or any other * --* copies thereof may not be provided or otherwise made available to any * --* other person. No title to and ownership of the software is hereby * --* transferred. * --* * --* The information in this software is subject to change without notice * --* and should not be construed as a commitment by DIGITAL Equipment * --* Corporation. * --* * --* DIGITAL assumes no responsibility for the use or reliability of its * --* software on equipment which is not supplied by DIGITAL. * --* * --**************************************************************************** --******************************************************************************************************************** -- Created: 15-MAR-2001 22:50:44 by OpenVMS SDL EV1-33 -- Source: 12-MAR-1992 10:19:55 $11$DUA933:[LIB_ADA.LIS]CPBDEF.SDL;1 --******************************************************************************************************************** with SYSTEM; use SYSTEM; with STARLET; use STARLET; with CONDITION_HANDLING; use CONDITION_HANDLING; package CPBDEF is -- module $CPBDEF --+ -- -- Constants defining CPU capability numbers and flags for routines -- CPB_C_PRIMARY : constant := 0; -- Primary CPU (aka TIMEKEEPER) CPB_C_NS : constant := 1; -- future CPB_C_QUORUM : constant := 2; -- Cluster quorum required CPB_C_RUN : constant := 3; -- Run capability CPB_C_AUDIT : constant := 4; -- Audit capability CPB_C_HARDAFF : constant := 31; CPB_C_MAX : constant := 32; CPB_C_VECTOR : constant := 1; -- equate NS with VECTOR CPB_M_PRIMARY : constant := 16#00000001#; CPB_M_VECTOR : constant := 16#00000002#; CPB_M_QUORUM : constant := 16#00000004#; CPB_M_RUN : constant := 16#00000008#; CPB_M_AUDIT : constant := 16#00000010#; CPB_M_IMPLICIT_AFFINITY : constant := 16#40000000#; CPB_M_EXPLICIT_AFFINITY : constant := 16#80000000#; type CPB_TYPE is record PRIMARY : BOOLEAN; -- Primary (timekeeper) VECTOR : BOOLEAN; -- Vector processor QUORUM : BOOLEAN; -- Cluster quorum required RUN : BOOLEAN; -- CPU can run processes AUDIT : BOOLEAN; -- CPU can perform security audit FILLER_1 : UNSIGNED_25; IMPLICIT_AFFINITY : BOOLEAN; -- Implicit affinity to a CPU EXPLICIT_AFFINITY : BOOLEAN; -- Explicit affinity to a CPU end record; for CPB_TYPE use record PRIMARY at 0 range 0 .. 0; VECTOR at 0 range 1 .. 1; QUORUM at 0 range 2 .. 2; RUN at 0 range 3 .. 3; AUDIT at 0 range 4 .. 4; FILLER_1 at 0 range 5 .. 29; IMPLICIT_AFFINITY at 3 range 6 .. 6; EXPLICIT_AFFINITY at 3 range 7 .. 7; end record; for CPB_TYPE'SIZE use 32; CPB_TYPE_INIT : constant CPB_TYPE := (PRIMARY => FALSE, VECTOR => FALSE, QUORUM => FALSE, RUN => FALSE, AUDIT => FALSE, FILLER_1 => 0, IMPLICIT_AFFINITY => FALSE, EXPLICIT_AFFINITY => FALSE); type CPB_TYPE is record CPB : CPB_TYPE; end record; for CPB_TYPE use record CPB at 0 range 0 .. 31; end record; for CPB_TYPE'SIZE use 32; CPB_TYPE_INIT : constant CPB_TYPE := ( CPB => CPB_TYPE_INIT ); CPB_M_FLAG_CHECK_CPU : constant := 16#00000001#; CPB_M_FLAG_PERMANENT : constant := 16#00000002#; CPB_M_FLAG_PRIMARY : constant := 16#00000004#; type CPB_FLAGS_TYPE is record FLAG_CHECK_CPU : BOOLEAN; -- Check that process can run FLAG_PERMANENT : BOOLEAN; -- Affect process permanent mask FLAG_PRIMARY : BOOLEAN; -- Request to run on primary cpu FLAG_FILLER : UNSIGNED_3; -- *** ADD ALL NEW BITFIELDS BEFORE THIS DECLARATION -- *** THIS FIELD IS USED TO ASSURE MASKS ARE WITHIN RANGE FILLER_1 : UNSIGNED_2; end record; for CPB_FLAGS_TYPE use record FLAG_CHECK_CPU at 0 range 0 .. 0; FLAG_PERMANENT at 0 range 1 .. 1; FLAG_PRIMARY at 0 range 2 .. 2; FLAG_FILLER at 0 range 3 .. 5; FILLER_1 at 0 range 6 .. 7; end record; for CPB_FLAGS_TYPE'SIZE use 8; CPB_FLAGS_TYPE_INIT : constant CPB_FLAGS_TYPE := (FLAG_CHECK_CPU => FALSE, FLAG_PERMANENT => FALSE, FLAG_PRIMARY => FALSE, FLAG_FILLER => 0, FILLER_1 => 0); type CPB_FLAGS_TYPE is record CPB_FLAGS : CPB_FLAGS_TYPE; end record; for CPB_FLAGS_TYPE use record CPB_FLAGS at 0 range 0 .. 7; end record; for CPB_FLAGS_TYPE'SIZE use 8; CPB_FLAGS_TYPE_INIT : constant CPB_FLAGS_TYPE := ( CPB_FLAGS => CPB_FLAGS_TYPE_INIT); end CPBDEF;