-- --**************************************************************************** --* * --* 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:41 by OpenVMS SDL EV1-33 -- Source: 2-SEP-1989 10:51:18 $11$DUA933:[LIB_ADA.LIS]PMBDEF.SDL;1 --******************************************************************************************************************** with SYSTEM; use SYSTEM; with STARLET; use STARLET; with CONDITION_HANDLING; use CONDITION_HANDLING; package PMBDEF is -- module $PMBDEF --+ -- PAGE FAULT MONITOR CONTROL BLOCK --- PMB_M_MODE : constant := 16#00000001#; PMB_K_SUBPROC : constant := 0; -- Subprocess mode PMB_K_IMAGE : constant := 1; -- Image mode PMB_M_ASTIP : constant := 16#00000002#; PMB_M_QAST : constant := 16#00000004#; PMB_K_LENGTH : constant := 64; -- Length of PMB PMB_C_LENGTH : constant := 64; -- Length of PMB type PMB_FLAGS_TYPE is -- Processing flags record MODE : BOOLEAN; -- Mode of operation ASTIP : BOOLEAN; -- AST in progress flag QAST : BOOLEAN; -- Imbedded ACB is enqueued on the PCB FILLER_1 : UNSIGNED_5; end record; for PMB_FLAGS_TYPE use record MODE at 0 range 0 .. 0; ASTIP at 0 range 1 .. 1; QAST at 0 range 2 .. 2; FILLER_1 at 0 range 3 .. 7; end record; for PMB_FLAGS_TYPE'SIZE use 8; PMB_FLAGS_TYPE_INIT : constant PMB_FLAGS_TYPE := (MODE => FALSE, ASTIP => FALSE, QAST => FALSE, FILLER_1 => 0); type PMB_SUBP_BLOCK_TYPE is -- Utility storage in subprocess mode record FILLER_1 : UNSIGNED_LONGWORD_ARRAY (1 .. 2); -- SPARE MBXCHN : UNSIGNED_WORD; -- Subprocess mailbox channel OACMODE : UNSIGNED_BYTE; -- Owner access mode (Synonym for ACMODE) FILLER_2 : UNSIGNED_BYTE_ARRAY (1 .. 1); -- SPARE IPID : UNSIGNED_LONGWORD; -- IPID of subprocess (Synonym for PID) EPID : UNSIGNED_LONGWORD; -- EPID of subprocess FILLER_3 : UNSIGNED_LONGWORD_ARRAY (1 .. 2); -- SPARE end record; for PMB_SUBP_BLOCK_TYPE use record FILLER_1 at 0 range 0 .. 63; MBXCHN at 8 range 0 .. 15; OACMODE at 10 range 0 .. 7; FILLER_2 at 11 range 0 .. 7; IPID at 12 range 0 .. 31; EPID at 16 range 0 .. 31; FILLER_3 at 20 range 0 .. 63; end record; for PMB_SUBP_BLOCK_TYPE'SIZE use 224; PMB_SUBP_BLOCK_TYPE_INIT : constant PMB_SUBP_BLOCK_TYPE := (FILLER_1 => (others => 0), MBXCHN => 0, OACMODE => 0, FILLER_2 => (others => 0), IPID => 0, EPID => 0, FILLER_3 => (others => 0)); type PMB_ACB_OVERLAY_TYPE is record ASTQFL : UNSIGNED_LONGWORD; -- ACB flink ASTQBL : UNSIGNED_LONGWORD; -- ACB blink FILLER_1 : UNSIGNED_BYTE_ARRAY (1 .. 2); -- SPARE ACMODE : UNSIGNED_BYTE; -- Owner access mode RMOD : UNSIGNED_BYTE; -- AST delivery mode/flags PID : UNSIGNED_LONGWORD; -- PID for AST delivery AST : UNSIGNED_LONGWORD; -- AST routine address ASTPRM : UNSIGNED_LONGWORD; -- AST parameter KAST : UNSIGNED_LONGWORD; -- Address of piggy-back kernel AST routine ----Component(s) below are defined as comments since they ----overlap other fields ---- ----SUBP_BLOCK : PMB_SUBP_BLOCK_TYPE; -- Utility storage in subprocess mode end record; for PMB_ACB_OVERLAY_TYPE use record ASTQFL at 0 range 0 .. 31; ASTQBL at 4 range 0 .. 31; FILLER_1 at 8 range 0 .. 15; ACMODE at 10 range 0 .. 7; RMOD at 11 range 0 .. 7; PID at 12 range 0 .. 31; AST at 16 range 0 .. 31; ASTPRM at 20 range 0 .. 31; KAST at 24 range 0 .. 31; ----Component representation spec(s) below are defined as ----comments since they overlap other fields ---- ----SUBP_BLOCK at 0 range 0 .. 223; end record; for PMB_ACB_OVERLAY_TYPE'SIZE use 224; PMB_ACB_OVERLAY_TYPE_INIT : constant PMB_ACB_OVERLAY_TYPE := (ASTQFL => 0, ASTQBL => 0, FILLER_1 => (others => 0), ACMODE => 0, RMOD => 0, PID => 0, AST => 0, ASTPRM => 0, KAST => 0); type PMB_TYPE is record CURBUF : UNSIGNED_LONGWORD; -- Current buffer pointer BUFBASE : UNSIGNED_LONGWORD; -- Current buffer base address SIZE : UNSIGNED_WORD; -- Block size field TYP : UNSIGNED_BYTE; -- Dynamic structure type (PMB) FLAGS : PMB_FLAGS_TYPE; -- Processing flags LASTCPU : UNSIGNED_LONGWORD; -- Last recorded CPU time OVERFLOW : UNSIGNED_LONGWORD; -- Buffer overflow counter (both modes) HDR : UNSIGNED_QUADWORD; -- Free buffer queue header SBPHDR : UNSIGNED_QUADWORD; -- Filled buffer queue header ACB_OVERLAY : PMB_ACB_OVERLAY_TYPE; end record; for PMB_TYPE use record CURBUF at 0 range 0 .. 31; BUFBASE at 4 range 0 .. 31; SIZE at 8 range 0 .. 15; TYP at 10 range 0 .. 7; FLAGS at 11 range 0 .. 7; LASTCPU at 12 range 0 .. 31; OVERFLOW at 16 range 0 .. 31; HDR at 20 range 0 .. 63; SBPHDR at 28 range 0 .. 63; ACB_OVERLAY at 36 range 0 .. 223; end record; for PMB_TYPE'SIZE use 512; PMB_TYPE_INIT : constant PMB_TYPE := (CURBUF => 0, BUFBASE => 0, SIZE => 0, TYP => 0, FLAGS => PMB_FLAGS_TYPE_INIT, LASTCPU => 0, OVERFLOW => 0, HDR => (0, 0), SBPHDR => (0, 0), ACB_OVERLAY => PMB_ACB_OVERLAY_TYPE_INIT ); end PMBDEF;