-- --**************************************************************************** --* * --* 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:52:59 by OpenVMS SDL EV1-33 -- Source: 25-SEP-1991 14:43:06 $11$DUA933:[LIB_ADA.LIS]MSLGDEF.SDL;1 --******************************************************************************************************************** with SYSTEM; use SYSTEM; with STARLET; use STARLET; with CONDITION_HANDLING; use CONDITION_HANDLING; package MSLGDEF is -- module $MSLGDEF --+ -- MSLG, MScp error LoG message definitions -- These definitions describe the format of the error log messages -- generated by MSCP and TMSCP devices. --- -- -- Generic MSCP/TMSCP error log entry format -- MSLG_M_LF_SQNRS : constant := 16#00000001#; MSLG_M_LF_INFO : constant := 16#00000002#; MSLG_M_LF_DCDC : constant := 16#00000008#; MSLG_M_LF_RPLER : constant := 16#00000010#; MSLG_M_LF_BBR : constant := 16#00000020#; MSLG_M_LF_CONT : constant := 16#00000040#; MSLG_M_LF_SUCC : constant := 16#00000080#; MSLG_K_CNT_ERR : constant := 0; MSLG_K_BUS_ADDR : constant := 1; MSLG_K_DISK_TRN : constant := 2; MSLG_K_SDI : constant := 3; MSLG_K_SML_DSK : constant := 4; MSLG_K_TAPE_TRN : constant := 5; MSLG_K_STI_ERR : constant := 6; MSLG_K_STI_DEL : constant := 7; MSLG_K_STI_FEL : constant := 8; MSLG_K_REPLACE : constant := 9; MSLG_K_LDR_ERR : constant := 10; MSLG_K_DCD_CORR : constant := 12; type MSLG_FLAGS_TYPE is -- Error Log Message Flags record LF_SQNRS : BOOLEAN; -- Sequence Number Reset LF_INFO : BOOLEAN; -- Informational FILLER_1 : BOOLEAN; LF_DCDC : BOOLEAN; -- Disk Copy Data Correlated LF_RPLER : BOOLEAN; -- Error during replacement LF_BBR : BOOLEAN; -- Bad block replacement request LF_CONT : BOOLEAN; -- Operation continuing LF_SUCC : BOOLEAN; -- Operation successful end record; for MSLG_FLAGS_TYPE use record LF_SQNRS at 0 range 0 .. 0; LF_INFO at 0 range 1 .. 1; FILLER_1 at 0 range 2 .. 2; LF_DCDC at 0 range 3 .. 3; LF_RPLER at 0 range 4 .. 4; LF_BBR at 0 range 5 .. 5; LF_CONT at 0 range 6 .. 6; LF_SUCC at 0 range 7 .. 7; end record; for MSLG_FLAGS_TYPE'SIZE use 8; MSLG_FLAGS_TYPE_INIT : constant MSLG_FLAGS_TYPE := (LF_SQNRS => FALSE, LF_INFO => FALSE, FILLER_1 => FALSE, LF_DCDC => FALSE, LF_RPLER => FALSE, LF_BBR => FALSE, LF_CONT => FALSE, LF_SUCC => FALSE); type MSLG_GENERIC_MSCP_ERRLOG_TYPE is record CMD_REF : UNSIGNED_LONGWORD; -- Command reference number UNIT : UNSIGNED_WORD; -- Unit number SEQ_NUM : UNSIGNED_WORD; -- Sequence Number FORMAT : UNSIGNED_BYTE; -- Format FLAGS : MSLG_FLAGS_TYPE; -- Error Log Message Flags EVENT : UNSIGNED_WORD; -- Event Code CNT_ID : UNSIGNED_QUADWORD; -- Controller ID CNT_SVR : UNSIGNED_BYTE; -- Controller software version CNT_HVR : UNSIGNED_BYTE; -- Controller hardware version MULT_UNT : UNSIGNED_WORD; -- Multi-unit Code UNIT_ID : UNSIGNED_QUADWORD; -- Unit ID UNIT_SVR : UNSIGNED_BYTE; -- Unit software version UNIT_HVR : UNSIGNED_BYTE; -- Unit hardware version LEVEL : UNSIGNED_BYTE; -- Level RETRY : UNSIGNED_BYTE; -- Retry VOL_SER : UNSIGNED_LONGWORD; -- Volume Serial Number (disks) ----Component(s) below are defined as comments since they ----overlap other fields ---- ----GAP_CNT : UNSIGNED_LONGWORD; -- Position - object count (tapes) FMTR_SVR : UNSIGNED_BYTE; -- Formatter software version FMTR_HVR : UNSIGNED_BYTE; -- Formatter hardware version FILLER_1 : UNSIGNED_WORD; end record; for MSLG_GENERIC_MSCP_ERRLOG_TYPE use record CMD_REF at 0 range 0 .. 31; UNIT at 4 range 0 .. 15; SEQ_NUM at 6 range 0 .. 15; FORMAT at 8 range 0 .. 7; FLAGS at 9 range 0 .. 7; EVENT at 10 range 0 .. 15; CNT_ID at 12 range 0 .. 63; CNT_SVR at 20 range 0 .. 7; CNT_HVR at 21 range 0 .. 7; MULT_UNT at 22 range 0 .. 15; UNIT_ID at 24 range 0 .. 63; UNIT_SVR at 32 range 0 .. 7; UNIT_HVR at 33 range 0 .. 7; LEVEL at 34 range 0 .. 7; RETRY at 35 range 0 .. 7; VOL_SER at 36 range 0 .. 31; ----Component representation spec(s) below are defined as ----comments since they overlap other fields ---- ----GAP_CNT at 36 range 0 .. 31; FMTR_SVR at 40 range 0 .. 7; FMTR_HVR at 41 range 0 .. 7; FILLER_1 at 42 range 0 .. 15; end record; for MSLG_GENERIC_MSCP_ERRLOG_TYPE'SIZE use 352; MSLG_GENERIC_MSCP_ERRLOG_TYPE_INIT : constant MSLG_GENERIC_MSCP_ERRLOG_TYPE := (CMD_REF => 0, UNIT => 0, SEQ_NUM => 0, FORMAT => 0, FLAGS => MSLG_FLAGS_TYPE_INIT, EVENT => 0, CNT_ID => (0, 0), CNT_SVR => 0, CNT_HVR => 0, MULT_UNT => 0, UNIT_ID => (0, 0), UNIT_SVR => 0, UNIT_HVR => 0, LEVEL => 0, RETRY => 0, VOL_SER => 0, FMTR_SVR => 0, FMTR_HVR => 0, FILLER_1 => 0); -- -- Controller Error (MSLG$K_CNT_ERR) -- type MSLG_CNT_ERR_TYPE is record FILLER_1 : UNSIGNED_BYTE_ARRAY (1 .. 22); CNT_ERR : INTEGER_8; -- Controller dependent data end record; for MSLG_CNT_ERR_TYPE use record FILLER_1 at 0 range 0 .. 175; CNT_ERR at 22 range 0 .. 7; end record; for MSLG_CNT_ERR_TYPE'SIZE use 184; MSLG_CNT_ERR_TYPE_INIT : constant MSLG_CNT_ERR_TYPE := (FILLER_1 => (others => 0), CNT_ERR => 0); -- -- Host Memory Access Error (MSLG$K_BUS_ADDR) -- type MSLG_BUS_ADDR_TYPE is record FILLER_1 : UNSIGNED_BYTE_ARRAY (1 .. 24); BUS_ADDR : UNSIGNED_LONGWORD; -- Bus Address end record; for MSLG_BUS_ADDR_TYPE use record FILLER_1 at 0 range 0 .. 191; BUS_ADDR at 24 range 0 .. 31; end record; for MSLG_BUS_ADDR_TYPE'SIZE use 224; MSLG_BUS_ADDR_TYPE_INIT : constant MSLG_BUS_ADDR_TYPE := (FILLER_1 => (others => 0), BUS_ADDR => 0); -- -- Disk Transfer Error (MSLG$K_DISK_TRN) -- MSLG_K_DISK_TRN_MSGSIZ : constant := 44; -- Size of DISK_TRN_ERROR msg. type MSLG_DISK_TRN_TYPE is record FILLER_1 : UNSIGNED_BYTE_ARRAY (1 .. 40); HDR_CODE : UNSIGNED_LONGWORD; -- Header Code DISK_TRN : INTEGER_8; -- Controller or disk dependent data end record; for MSLG_DISK_TRN_TYPE use record FILLER_1 at 0 range 0 .. 319; HDR_CODE at 40 range 0 .. 31; DISK_TRN at 44 range 0 .. 7; end record; for MSLG_DISK_TRN_TYPE'SIZE use 360; MSLG_DISK_TRN_TYPE_INIT : constant MSLG_DISK_TRN_TYPE := (FILLER_1 => (others => 0), HDR_CODE => 0, DISK_TRN => 0); -- -- SDI Error (MSLG$K_SDI) -- type MSLG_SDI_TYPE is record FILLER_1 : UNSIGNED_BYTE_ARRAY (1 .. 40); FILLER_2 : UNSIGNED_LONGWORD; SDI : UNSIGNED_BYTE_ARRAY (1 .. 12); -- SDI Information end record; for MSLG_SDI_TYPE use record FILLER_1 at 0 range 0 .. 319; FILLER_2 at 40 range 0 .. 31; SDI at 44 range 0 .. 95; end record; for MSLG_SDI_TYPE'SIZE use 448; MSLG_SDI_TYPE_INIT : constant MSLG_SDI_TYPE := (FILLER_1 => (others => 0), FILLER_2 => 0, SDI => (others => 0)); -- -- Small Disk Error (MSLG$K_SML_DSK) -- type MSLG_SML_DSK_TYPE is record FILLER_1 : UNSIGNED_BYTE_ARRAY (1 .. 34); SDE_CYL : UNSIGNED_WORD; -- Cylinder FILLER_2 : UNSIGNED_BYTE_ARRAY (1 .. 4); SML_DSK : INTEGER_8; -- Controller or device dependent end record; for MSLG_SML_DSK_TYPE use record FILLER_1 at 0 range 0 .. 271; SDE_CYL at 34 range 0 .. 15; FILLER_2 at 36 range 0 .. 31; SML_DSK at 40 range 0 .. 7; end record; for MSLG_SML_DSK_TYPE'SIZE use 328; MSLG_SML_DSK_TYPE_INIT : constant MSLG_SML_DSK_TYPE := (FILLER_1 => (others => 0), SDE_CYL => 0, FILLER_2 => (others => 0), SML_DSK => 0); -- -- Tape Transfer Error (MSLG$K_STI_ERR) -- -- There are no special field definitions for tape transfer errors at this time. -- -- STI communication or command failure (MSLG$K_STI_ERR) -- STI drive error log (MSLG$K_STI_DEL) -- STI formatter error log (MSLG$K_STI_FEL) -- type MSLG_STI_ERR_TYPE is record FILLER_1 : UNSIGNED_BYTE_ARRAY (1 .. 44); STI : UNSIGNED_BYTE_ARRAY (1 .. 20); -- STI Information end record; for MSLG_STI_ERR_TYPE use record FILLER_1 at 0 range 0 .. 351; STI at 44 range 0 .. 159; end record; for MSLG_STI_ERR_TYPE'SIZE use 512; MSLG_STI_ERR_TYPE_INIT : constant MSLG_STI_ERR_TYPE := (FILLER_1 => (others => 0), STI => (others => 0)); -- -- Bad Block Replacement Attempted (MSLG$K_REPLACE) -- MSLG_M_LFR_BR : constant := 16#00000400#; MSLG_M_LFR_RI : constant := 16#00000800#; MSLG_M_LFR_RF : constant := 16#00001000#; MSLG_M_LFR_TE : constant := 16#00002000#; MSLG_M_LFR_FE : constant := 16#00004000#; MSLG_M_LFR_RP : constant := 16#00008000#; MSLG_K_REPLACE_MSGSIZ : constant := 54; -- Size of REPLACE msg for BBR error logging type MSLG_RPL_FLGS_TYPE is -- Replace Flags record FILLER_1 : UNSIGNED_10; LFR_BR : BOOLEAN; -- Bad RBN LFR_RI : BOOLEAN; -- RCT inconsistent LFR_RF : BOOLEAN; -- Reformat error LFR_TE : BOOLEAN; -- Tertiary revector LFR_FE : BOOLEAN; -- Forced error (data not recovered) LFR_RP : BOOLEAN; -- Replace attempted (block really bad) end record; for MSLG_RPL_FLGS_TYPE use record FILLER_1 at 0 range 0 .. 9; LFR_BR at 1 range 2 .. 2; LFR_RI at 1 range 3 .. 3; LFR_RF at 1 range 4 .. 4; LFR_TE at 1 range 5 .. 5; LFR_FE at 1 range 6 .. 6; LFR_RP at 1 range 7 .. 7; end record; for MSLG_RPL_FLGS_TYPE'SIZE use 16; MSLG_RPL_FLGS_TYPE_INIT : constant MSLG_RPL_FLGS_TYPE := (FILLER_1 => 0, LFR_BR => FALSE, LFR_RI => FALSE, LFR_RF => FALSE, LFR_TE => FALSE, LFR_FE => FALSE, LFR_RP => FALSE); type MSLG_REPLACE_TYPE is record FILLER_1 : UNSIGNED_BYTE_ARRAY (1 .. 34); RPL_FLGS : MSLG_RPL_FLGS_TYPE; -- Replace Flags FILLER_2 : UNSIGNED_BYTE_ARRAY (1 .. 4); BAD_LBN : UNSIGNED_LONGWORD; -- Bad LBN OLD_RBN : UNSIGNED_LONGWORD; -- Previous RBN NEW_RBN : UNSIGNED_LONGWORD; -- New RBN CAUSE : UNSIGNED_WORD; -- Event code causing replacement end record; for MSLG_REPLACE_TYPE use record FILLER_1 at 0 range 0 .. 271; RPL_FLGS at 34 range 0 .. 15; FILLER_2 at 36 range 0 .. 31; BAD_LBN at 40 range 0 .. 31; OLD_RBN at 44 range 0 .. 31; NEW_RBN at 48 range 0 .. 31; CAUSE at 52 range 0 .. 15; end record; for MSLG_REPLACE_TYPE'SIZE use 432; MSLG_REPLACE_TYPE_INIT : constant MSLG_REPLACE_TYPE := (FILLER_1 => (others => 0), RPL_FLGS => MSLG_RPL_FLGS_TYPE_INIT, FILLER_2 => (others => 0), BAD_LBN => 0, OLD_RBN => 0, NEW_RBN => 0, CAUSE => 0); -- -- Media Loader Errors (MSLG$K_LDR_ERR) -- type MSLG_LDR_ERR_TYPE is record FILLER_1 : UNSIGNED_BYTE_ARRAY (1 .. 36); ML_ID : UNSIGNED_QUADWORD; -- Media loader identifier ML_SVR : UNSIGNED_BYTE; -- Media loader software version ML_HVR : UNSIGNED_BYTE; -- Media loader hardware version ML_UNIT : UNSIGNED_WORD; -- Media loader unit number LDR_ERR : INTEGER_8; -- Controller dependent data end record; for MSLG_LDR_ERR_TYPE use record FILLER_1 at 0 range 0 .. 287; ML_ID at 36 range 0 .. 63; ML_SVR at 44 range 0 .. 7; ML_HVR at 45 range 0 .. 7; ML_UNIT at 46 range 0 .. 15; LDR_ERR at 48 range 0 .. 7; end record; for MSLG_LDR_ERR_TYPE'SIZE use 392; MSLG_LDR_ERR_TYPE_INIT : constant MSLG_LDR_ERR_TYPE := (FILLER_1 => (others => 0), ML_ID => (0, 0), ML_SVR => 0, ML_HVR => 0, ML_UNIT => 0, LDR_ERR => 0); -- -- Disk Copy Data Correlation (MSCP$K_DCD_ERROR) -- type MSLG_DCD_CORR_TYPE is record FILLER_1 : UNSIGNED_LONGWORD; DST_UNUM : UNSIGNED_WORD; -- Destination unit number FILLER_2 : UNSIGNED_BYTE_ARRAY (1 .. 10); DST_UID : UNSIGNED_QUADWORD; -- Destination unit identifier SRC_UNUM : UNSIGNED_WORD; -- Source unit number SRC_CID : UNSIGNED_QUADWORD; -- Source controller identifier SRC_CSVR : UNSIGNED_BYTE; -- Source controller SW version SRC_CHVR : UNSIGNED_BYTE; -- Source controller HW version SRC_UID : UNSIGNED_QUADWORD; -- Source unit identifier PORT_ADR : UNSIGNED_QUADWORD; -- ource unit's subsystem port address SYS_ADR : UNSIGNED_QUADWORD; -- Source unit's subsystem system address end record; for MSLG_DCD_CORR_TYPE use record FILLER_1 at 0 range 0 .. 31; DST_UNUM at 4 range 0 .. 15; FILLER_2 at 6 range 0 .. 79; DST_UID at 16 range 0 .. 63; SRC_UNUM at 24 range 0 .. 15; SRC_CID at 26 range 0 .. 63; SRC_CSVR at 34 range 0 .. 7; SRC_CHVR at 35 range 0 .. 7; SRC_UID at 36 range 0 .. 63; PORT_ADR at 44 range 0 .. 63; SYS_ADR at 52 range 0 .. 63; end record; for MSLG_DCD_CORR_TYPE'SIZE use 480; MSLG_DCD_CORR_TYPE_INIT : constant MSLG_DCD_CORR_TYPE := (FILLER_1 => 0, DST_UNUM => 0, FILLER_2 => (others => 0), DST_UID => (0, 0), SRC_UNUM => 0, SRC_CID => (0, 0), SRC_CSVR => 0, SRC_CHVR => 0, SRC_UID => (0, 0), PORT_ADR => (0, 0), SYS_ADR => (0, 0)); end MSLGDEF;