-- --**************************************************************************** --* * --* 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:53:51 by OpenVMS SDL EV1-33 -- Source: 3-FEB-2000 11:30:27 $11$DUA933:[LIB_ADA.LIS]PSCANCTXDEF.SDL;1 --******************************************************************************************************************** with SYSTEM; use SYSTEM; with STARLET; use STARLET; with CONDITION_HANDLING; use CONDITION_HANDLING; package PSCANCTXDEF is -- module $PSCANCTXDEF -- -- The PSCANCTX$ structure is exchanged with remote nodes. Any updates to this -- structure must take mixed-version operation into account. -- PSCANCTX_M_SUPER : constant := 16#00000001#; PSCANCTX_M_CSID_VEC : constant := 16#00000002#; PSCANCTX_M_LOCKED : constant := 16#00000004#; PSCANCTX_M_MULTI_NODE : constant := 16#00000008#; PSCANCTX_M_BUSY : constant := 16#00000010#; PSCANCTX_M_RELOCK : constant := 16#00000020#; PSCANCTX_M_RESERVED : constant := 16#00000040#; PSCANCTX_M_SCHED_CLASS_CAP : constant := 16#00000080#; PSCANCTX_K_LENGTH : constant := 64; -- length of data structure PSCANCTX_M_NODE_ITEM : constant := -2147483648; -- item code references a node PSCANCTX_V_NODE_ITEM : constant := 31; -- item code references a node type PSCANCTX_FILL_1_TYPE is record SUPER : BOOLEAN; -- allocated from supervisor mode CSID_VEC : BOOLEAN; -- csid vector is present LOCKED : BOOLEAN; -- cell is locked in memory MULTI_NODE : BOOLEAN; -- scan is for more than one node BUSY : BOOLEAN; -- scan in progress on this block RELOCK : BOOLEAN; -- ignore BUSY flag, allow a "lock" RESERVED : BOOLEAN; -- space holder for kernel threads SCHED_CLASS_CAP : BOOLEAN; -- remote node needs class scheduling support end record; for PSCANCTX_FILL_1_TYPE use record SUPER at 0 range 0 .. 0; CSID_VEC at 0 range 1 .. 1; LOCKED at 0 range 2 .. 2; MULTI_NODE at 0 range 3 .. 3; BUSY at 0 range 4 .. 4; RELOCK at 0 range 5 .. 5; RESERVED at 0 range 6 .. 6; SCHED_CLASS_CAP at 0 range 7 .. 7; end record; for PSCANCTX_FILL_1_TYPE'SIZE use 8; PSCANCTX_FILL_1_TYPE_INIT : constant PSCANCTX_FILL_1_TYPE := (SUPER => FALSE, CSID_VEC => FALSE, LOCKED => FALSE, MULTI_NODE => FALSE, BUSY => FALSE, RELOCK => FALSE, RESERVED => FALSE, SCHED_CLASS_CAP => FALSE); type PSCANCTXDEF_TYPE is record FLINK : UNSIGNED_LONGWORD; -- forward link BLINK : UNSIGNED_LONGWORD; -- back link SIZE : UNSIGNED_WORD; -- size of structure TYP : UNSIGNED_BYTE; -- structure type code SUBTYP : UNSIGNED_BYTE; -- structure subtype MAJ_VERS : UNSIGNED_WORD; -- incompatible level MIN_VERS : UNSIGNED_WORD; -- upwards-compatible level FLAGS : UNSIGNED_LONGWORD; ----Component(s) below are defined as comments since they ----overlap other fields ---- ----FILL_1 : PSCANCTX_FILL_1_TYPE; CUR_CSID : UNSIGNED_LONGWORD; -- CSID for scan in progress CUR_IPID : UNSIGNED_LONGWORD; -- initial IPID for scan in progress NEXT_IPID : UNSIGNED_LONGWORD; -- updated IPID for scan in progress CUR_EPID : UNSIGNED_LONGWORD; -- EPID for scan in progress ITMLSTOFF : UNSIGNED_WORD; -- offset to item list BUFFEROFF : UNSIGNED_WORD; -- offset to buffer area CSIDOFF : UNSIGNED_WORD; -- offset to csid vector CSIDIDX : UNSIGNED_WORD; -- index of current csid SVAPTE : UNSIGNED_LONGWORD; -- sva of pte for this block CWPSSRV : UNSIGNED_LONGWORD; -- address of CWPSSRV structure JPIBUFADR : UNSIGNED_LONGWORD; -- address of $GETJPI buffer SEQNUM : UNSIGNED_WORD; -- sequence number ACMODE : UNSIGNED_BYTE; -- access mode of original call SPARE0 : UNSIGNED_BYTE; -- just a little extra SPARE1 : UNSIGNED_LONGWORD; -- just a little extra end record; for PSCANCTXDEF_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; MAJ_VERS at 12 range 0 .. 15; MIN_VERS at 14 range 0 .. 15; FLAGS at 16 range 0 .. 31; ----Component representation spec(s) below are defined as ----comments since they overlap other fields ---- ----FILL_1 at 16 range 0 .. 7; CUR_CSID at 20 range 0 .. 31; CUR_IPID at 24 range 0 .. 31; NEXT_IPID at 28 range 0 .. 31; CUR_EPID at 32 range 0 .. 31; ITMLSTOFF at 36 range 0 .. 15; BUFFEROFF at 38 range 0 .. 15; CSIDOFF at 40 range 0 .. 15; CSIDIDX at 42 range 0 .. 15; SVAPTE at 44 range 0 .. 31; CWPSSRV at 48 range 0 .. 31; JPIBUFADR at 52 range 0 .. 31; SEQNUM at 56 range 0 .. 15; ACMODE at 58 range 0 .. 7; SPARE0 at 59 range 0 .. 7; SPARE1 at 60 range 0 .. 31; end record; for PSCANCTXDEF_TYPE'SIZE use 512; PSCANCTXDEF_TYPE_INIT : constant PSCANCTXDEF_TYPE := (FLINK => 0, BLINK => 0, SIZE => 0, TYP => 0, SUBTYP => 0, MAJ_VERS => 0, MIN_VERS => 0, FLAGS => 0, CUR_CSID => 0, CUR_IPID => 0, NEXT_IPID => 0, CUR_EPID => 0, ITMLSTOFF => 0, BUFFEROFF => 0, CSIDOFF => 0, CSIDIDX => 0, SVAPTE => 0, CWPSSRV => 0, JPIBUFADR => 0, SEQNUM => 0, ACMODE => 0, SPARE0 => 0, SPARE1 => 0); -- -- The PSCANBUF$ structure is exchanged with remote nodes. Any updates to this -- structure must take mixed-version operation into account. -- PSCANBUF_M_SPARE0 : constant := 16#00000001#; PSCANBUF_K_LENGTH : constant := 32; -- length of data structure type PSCANBUF_FLAGS_TYPE is record SPARE0 : BOOLEAN; -- filler FILLER_1 : UNSIGNED_31; end record; for PSCANBUF_FLAGS_TYPE use record SPARE0 at 0 range 0 .. 0; FILLER_1 at 0 range 1 .. 31; end record; for PSCANBUF_FLAGS_TYPE'SIZE use 32; PSCANBUF_FLAGS_TYPE_INIT : constant PSCANBUF_FLAGS_TYPE := (SPARE0 => FALSE, FILLER_1 => 0); type PSCANBUFDEF_TYPE is record BUFLEN : UNSIGNED_LONGWORD; -- length of data area SPARE0 : UNSIGNED_LONGWORD; -- spare0 SIZE : UNSIGNED_WORD; -- size of structure TYP : UNSIGNED_BYTE; -- structure type code SUBTYP : UNSIGNED_BYTE; -- structure subtype MAJ_VERS : UNSIGNED_WORD; -- incompatible level MIN_VERS : UNSIGNED_WORD; -- upwards-compatible level FLAGS : PSCANBUF_FLAGS_TYPE; ITMLSTADR : UNSIGNED_LONGWORD; -- address of copy of JPI item list BUFFER_OFFSET : UNSIGNED_LONGWORD; -- offset to start of buffer FREE_OFFSET : UNSIGNED_LONGWORD; -- offset to next free byte end record; for PSCANBUFDEF_TYPE use record BUFLEN at 0 range 0 .. 31; SPARE0 at 4 range 0 .. 31; SIZE at 8 range 0 .. 15; TYP at 10 range 0 .. 7; SUBTYP at 11 range 0 .. 7; MAJ_VERS at 12 range 0 .. 15; MIN_VERS at 14 range 0 .. 15; FLAGS at 16 range 0 .. 31; ITMLSTADR at 20 range 0 .. 31; BUFFER_OFFSET at 24 range 0 .. 31; FREE_OFFSET at 28 range 0 .. 31; end record; for PSCANBUFDEF_TYPE'SIZE use 256; PSCANBUFDEF_TYPE_INIT : constant PSCANBUFDEF_TYPE := (BUFLEN => 0, SPARE0 => 0, SIZE => 0, TYP => 0, SUBTYP => 0, MAJ_VERS => 0, MIN_VERS => 0, FLAGS => PSCANBUF_FLAGS_TYPE_INIT, ITMLSTADR => 0, BUFFER_OFFSET => 0, FREE_OFFSET => 0); -- -- The PSCANITM$ structure is a local structure. If modified, you do not need -- to take mixed-version operation into account, however you must be sure that -- all modules and images which reference the structure are updated together. -- PSCANITM_K_LENGTH : constant := 12; -- length of data structure type PSCANITMDEF_TYPE is record ALLOC_LENGTH : UNSIGNED_LONGWORD; -- allocated length ITMLEN : UNSIGNED_LONGWORD; -- length of item list SIZE : UNSIGNED_WORD; -- size of header TYP : UNSIGNED_BYTE; -- structure type code SUBTYP : UNSIGNED_BYTE; -- structure subtype ITMLST : UNSIGNED_BYTE; -- start of the item list end record; for PSCANITMDEF_TYPE use record ALLOC_LENGTH at 0 range 0 .. 31; ITMLEN at 4 range 0 .. 31; SIZE at 8 range 0 .. 15; TYP at 10 range 0 .. 7; SUBTYP at 11 range 0 .. 7; ITMLST at 12 range 0 .. 7; end record; for PSCANITMDEF_TYPE'SIZE use 104; PSCANITMDEF_TYPE_INIT : constant PSCANITMDEF_TYPE := (ALLOC_LENGTH => 0, ITMLEN => 0, SIZE => 0, TYP => 0, SUBTYP => 0, ITMLST => 0); end PSCANCTXDEF;