--******************************************************************************************************************** -- Created: 9-Mar-2021 22:28:32 by OpenVMS SDL EV3-3 -- Source: 16-FEB-2007 09:40:25 $1$DGA8085:[LIB_ADA.LIS]PDBDEF.SDL;1 --******************************************************************************************************************** with SYSTEM; use SYSTEM; with STARLET; use STARLET; with CONDITION_HANDLING; use CONDITION_HANDLING; with CPUDEF;use CPUDEF; with FKBDEF;use FKBDEF; with CBBDEF;use CBBDEF; with BUGLOGDEF;use BUGLOGDEF; package PDBDEF is -- module $PDBDEF --+ -- DEFINE DEVICE PERFORMANCE DATA BLOCK --- PDB_K_ABORT_RQ : constant := 1; PDB_K_END_IO : constant := 2; PDB_K_END_RQ : constant := 3; PDB_K_START_IO : constant := 4; PDB_K_START_RQ : constant := 5; PDB_K_DIRIO : constant := 6; PDB_K_BUFIO : constant := 7; PDB_K_MAX_MODE : constant := 7; PDB_M_ALL : constant := 16#00000001#; PDB_M_ABORT_RQ : constant := 16#00000002#; PDB_M_END_IO : constant := 16#00000004#; PDB_M_END_RQ : constant := 16#00000008#; PDB_M_START_IO : constant := 16#00000010#; PDB_M_START_RQ : constant := 16#00000020#; PDB_M_XFER : constant := 16#00000040#; PDB_M_DIRIO : constant := 16#00000080#; PDB_M_BUFIO : constant := 16#00000100#; PDB_M_XQP : constant := 16#00000200#; PDB_K_LENGTH : constant := 156; -- LENGTH OF DATA CONTROL BLOCK PDB_C_LENGTH : constant := 156; -- LENGTH OF DATA CONTROL BLOCK PDB_S_PDBDEF : constant := 156; type PDB_FLAGS_TYPE is -- trace flags record AL : BOOLEAN; ABORT_RQ : BOOLEAN; END_IO : BOOLEAN; END_RQ : BOOLEAN; START_IO : BOOLEAN; START_RQ : BOOLEAN; XFER : BOOLEAN; DIRIO : BOOLEAN; BUFIO : BOOLEAN; XQP : BOOLEAN; FILLER_1 : UNSIGNED_22; end record; for PDB_FLAGS_TYPE use record AL at 0 range 0 .. 0; ABORT_RQ at 0 range 1 .. 1; END_IO at 0 range 2 .. 2; END_RQ at 0 range 3 .. 3; START_IO at 0 range 4 .. 4; START_RQ at 0 range 5 .. 5; XFER at 0 range 6 .. 6; DIRIO at 0 range 7 .. 7; BUFIO at 1 range 0 .. 0; XQP at 1 range 1 .. 1; FILLER_1 at 1 range 2 .. 23; end record; for PDB_FLAGS_TYPE'SIZE use 32; PDB_FLAGS_TYPE_INIT : constant PDB_FLAGS_TYPE := (AL => FALSE, ABORT_RQ => FALSE, END_IO => FALSE, END_RQ => FALSE, START_IO => FALSE, START_RQ => FALSE, XFER => FALSE, DIRIO => FALSE, BUFIO => FALSE, XQP => FALSE, FILLER_1 => 0); type PDB_TYPE is record FREEFL : ADDRESS; -- FREE BUFFER LISTHEAD FORWARD LINK FREEBL : ADDRESS; -- FREE BUFFER LISTHEAD BACKLINK SIZE : UNSIGNED_WORD; -- SIZE OF DATA STRUCTURE TYP : UNSIGNED_BYTE; -- TYPE OF DATA STRUCTURE OVERRUN : UNSIGNED_BYTE; -- OVERRUN INDICATOR FILLFL : ADDRESS; -- FILLED BUFFER LISTHEAD FORWARD LINK FILLBL : ADDRESS; -- FILLED BUFFER LISTHEAD BACKWARD LINK CURBUF : ADDRESS; -- ADDRESS OF CURRENT BUFFER NXTBUF : ADDRESS; -- ADDRESS OF NEXT LOCATION IN BUFFER ENDBUF : ADDRESS; -- ADDRESS OF END OF BUFFER PID : UNSIGNED_LONGWORD; -- PROCESS ID OF DATA COLLECTION PROCESS DEVCLASS : UNSIGNED_BYTE; -- DEVICE CLASS SELECTION DEVTYPE : UNSIGNED_BYTE; -- DEVICE TYPE SELECTION ANDM : UNSIGNED_WORD; -- STATUS SELECTION 'AND' MASK XORM : UNSIGNED_WORD; -- STATUS SELECTION 'XOR' MASK BUFCNT : UNSIGNED_WORD; -- COUNT OF FILLED BUFFERS FUNC : UNSIGNED_QUADWORD; -- SELECTION FUNCTION MASK FILLER_1 : UNSIGNED_BYTE_ARRAY (0 .. 3); DATA : UNSIGNED_QUADWORD; -- pointer to data area TRACE_BUFFER : UNSIGNED_QUADWORD; -- pointer to trace buffer FLAGS : PDB_FLAGS_TYPE; -- trace flags START_TRACE : ADDRESS; -- ptr to start trace routine STOP_TRACE : ADDRESS; -- ptr to stop trace routine ABORT_RQ : ADDRESS; -- abort I/O request END_IO : ADDRESS; -- end I/O transaction END_RQ : ADDRESS; -- end I/O request START_IO : ADDRESS; -- start I/O transaction START_RQ : ADDRESS; -- start I/O request DIO_BIO : ADDRESS; -- direct and buffered I/O FILLER_2 : UNSIGNED_BYTE_ARRAY (0 .. 3); RESERVED1 : UNSIGNED_QUADWORD; -- reserved RESERVED2 : UNSIGNED_QUADWORD; -- reserved RESERVED3 : UNSIGNED_QUADWORD; -- reserved LAST_WAKE : UNSIGNED_QUADWORD; -- The ABSTIM_TIC value when collector last woken SCC : ADDRESS; -- pointer to array of cycle counts per possible CPU SYSTIME : ADDRESS; -- pointer to array of systime info per possible CPU MAX_CPUS : INTEGER_32; FILLER_3 : UNSIGNED_BYTE_ARRAY (0 .. 3); end record; for PDB_TYPE use record FREEFL at 0 range 0 .. 31; FREEBL at 4 range 0 .. 31; SIZE at 8 range 0 .. 15; TYP at 10 range 0 .. 7; OVERRUN at 11 range 0 .. 7; FILLFL at 12 range 0 .. 31; FILLBL at 16 range 0 .. 31; CURBUF at 20 range 0 .. 31; NXTBUF at 24 range 0 .. 31; ENDBUF at 28 range 0 .. 31; PID at 32 range 0 .. 31; DEVCLASS at 36 range 0 .. 7; DEVTYPE at 37 range 0 .. 7; ANDM at 38 range 0 .. 15; XORM at 40 range 0 .. 15; BUFCNT at 42 range 0 .. 15; FUNC at 44 range 0 .. 63; FILLER_1 at 52 range 0 .. 31; DATA at 56 range 0 .. 63; TRACE_BUFFER at 64 range 0 .. 63; FLAGS at 72 range 0 .. 31; START_TRACE at 76 range 0 .. 31; STOP_TRACE at 80 range 0 .. 31; ABORT_RQ at 84 range 0 .. 31; END_IO at 88 range 0 .. 31; END_RQ at 92 range 0 .. 31; START_IO at 96 range 0 .. 31; START_RQ at 100 range 0 .. 31; DIO_BIO at 104 range 0 .. 31; FILLER_2 at 108 range 0 .. 31; RESERVED1 at 112 range 0 .. 63; RESERVED2 at 120 range 0 .. 63; RESERVED3 at 128 range 0 .. 63; LAST_WAKE at 136 range 0 .. 63; SCC at 144 range 0 .. 31; SYSTIME at 148 range 0 .. 31; MAX_CPUS at 152 range 0 .. 31; FILLER_3 at 156 range 0 .. 31; end record; for PDB_TYPE'SIZE use 1280; PDB_TYPE_INIT : constant PDB_TYPE := (FREEFL => ADDRESS_ZERO, FREEBL => ADDRESS_ZERO, SIZE => 0, TYP => 0, OVERRUN => 0, FILLFL => ADDRESS_ZERO, FILLBL => ADDRESS_ZERO, CURBUF => ADDRESS_ZERO, NXTBUF => ADDRESS_ZERO, ENDBUF => ADDRESS_ZERO, PID => 0, DEVCLASS => 0, DEVTYPE => 0, ANDM => 0, XORM => 0, BUFCNT => 0, FUNC => (0, 0), FILLER_1 => (others => 0), DATA => (0, 0), TRACE_BUFFER => (0, 0), FLAGS => PDB_FLAGS_TYPE_INIT, START_TRACE => ADDRESS_ZERO, STOP_TRACE => ADDRESS_ZERO, ABORT_RQ => ADDRESS_ZERO, END_IO => ADDRESS_ZERO, END_RQ => ADDRESS_ZERO, START_IO => ADDRESS_ZERO, START_RQ => ADDRESS_ZERO, DIO_BIO => ADDRESS_ZERO, FILLER_2 => (others => 0), RESERVED1 => (0, 0), RESERVED2 => (0, 0), RESERVED3 => (0, 0), LAST_WAKE => (0, 0), SCC => ADDRESS_ZERO, SYSTIME => ADDRESS_ZERO, MAX_CPUS => 0, FILLER_3 => (others => 0)); IOTRE_K_LENGTH : constant := 56; -- Structure size type IOTRE_TYPE is record TIMESTAMP : UNSIGNED_QUADWORD; -- timestamp in system cycle counts CPUID : UNSIGNED_LONGWORD; -- current CPU id MODE : UNSIGNED_LONGWORD; -- general trace category SEQNUM : UNSIGNED_LONGWORD; -- sequence number FUNC : UNSIGNED_LONGWORD; -- function code IRP : ADDRESS; -- address of IRP UCB : ADDRESS; -- address of UCB BCNT : UNSIGNED_LONGWORD; -- byte count LBN : UNSIGNED_LONGWORD; -- starting LBN PCB : ADDRESS; -- address of PCB RESERVED1 : UNSIGNED_LONGWORD; -- reserved RESERVED2 : UNSIGNED_LONGWORD; -- reserved RESERVED3 : UNSIGNED_LONGWORD; -- reserved end record; for IOTRE_TYPE use record TIMESTAMP at 0 range 0 .. 63; CPUID at 8 range 0 .. 31; MODE at 12 range 0 .. 31; SEQNUM at 16 range 0 .. 31; FUNC at 20 range 0 .. 31; IRP at 24 range 0 .. 31; UCB at 28 range 0 .. 31; BCNT at 32 range 0 .. 31; LBN at 36 range 0 .. 31; PCB at 40 range 0 .. 31; RESERVED1 at 44 range 0 .. 31; RESERVED2 at 48 range 0 .. 31; RESERVED3 at 52 range 0 .. 31; end record; for IOTRE_TYPE'SIZE use 448; IOTRE_TYPE_INIT : constant IOTRE_TYPE := (TIMESTAMP => (0, 0), CPUID => 0, MODE => 0, SEQNUM => 0, FUNC => 0, IRP => ADDRESS_ZERO, UCB => ADDRESS_ZERO, BCNT => 0, LBN => 0, PCB => ADDRESS_ZERO, RESERVED1 => 0, RESERVED2 => 0, RESERVED3 => 0); IOTRH_K_LENGTH : constant := 88; -- Structure size type IOTRH_TYPE is record IDX : INTEGER_32; -- current index into trace buffer MAX_IDX : UNSIGNED_LONGWORD; -- maximum trace index MBO : UNSIGNED_WORD; -- must-be-one field TYP : UNSIGNED_BYTE; -- Structure type SUBTYP : UNSIGNED_BYTE; -- subtype FILL1 : UNSIGNED_LONGWORD; SIZE : UNSIGNED_QUADWORD; -- Size ENTRY_PTR : UNSIGNED_QUADWORD; -- pointer to first trace entry ENTR : IOTRE_TYPE_ARRAY (1 .. 1); -- array of trace entries end record; for IOTRH_TYPE use record IDX at 0 range 0 .. 31; MAX_IDX at 4 range 0 .. 31; MBO at 8 range 0 .. 15; TYP at 10 range 0 .. 7; SUBTYP at 11 range 0 .. 7; FILL1 at 12 range 0 .. 31; SIZE at 16 range 0 .. 63; ENTRY_PTR at 24 range 0 .. 63; ENTR at 32 range 0 .. 447; end record; for IOTRH_TYPE'SIZE use 704; IOTRH_TYPE_INIT : constant IOTRH_TYPE := (IDX => 0, MAX_IDX => 0, MBO => 0, TYP => 0, SUBTYP => 0, FILL1 => 0, SIZE => (0, 0), ENTRY_PTR => (0, 0), ENTR => (others => IOTRE_TYPE_INIT)); end PDBDEF;