--******************************************************************************************************************** -- Created: 9-Mar-2021 22:28:29 by OpenVMS SDL EV3-3 -- Source: 07-JUN-1993 13:21:25 $1$DGA8085:[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_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_S_MSLG_CNT_ERR : constant := 23; -- Old size name for MSLG_CNT_ERR aggregate MSLG_S_MSLG_BUS_ADDR : constant := 28; -- Old size name for MSLG_BUS_ADDR aggregate 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_S_MSLG_SML_DSK : constant := 41; -- Old size name for MSLG_SML_DSK aggregate. type MSLG_FLAGS_TYPE is -- Error Log Message Flags record LF_SQNRS : BOOLEAN; -- Sequence Number Reset FILLER_1 : UNSIGNED_3; 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; FILLER_1 at 0 range 1 .. 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, FILLER_1 => 0, LF_RPLER => FALSE, LF_BBR => FALSE, LF_CONT => FALSE, LF_SUCC => FALSE); type MSLG_LEVEL_RETRY_TYPE is record LEVEL : UNSIGNED_BYTE; -- Level RETRY : UNSIGNED_BYTE; -- Retry end record; for MSLG_LEVEL_RETRY_TYPE use record LEVEL at 0 range 0 .. 7; RETRY at 1 range 0 .. 7; end record; for MSLG_LEVEL_RETRY_TYPE'SIZE use 16; MSLG_LEVEL_RETRY_TYPE_INIT : constant MSLG_LEVEL_RETRY_TYPE := (LEVEL => 0, RETRY => 0); type MSLG_RPL_FLGS_TYPE is -- Replace Flags - used in MSLG_REPLACE for MSLG$K_REPLACE 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_FMTR_VERSION_TYPE is record FMTR_SVR : UNSIGNED_BYTE; -- Formatter software version FMTR_HVR : UNSIGNED_BYTE; -- Formatter hardware version FILLER_1 : UNSIGNED_WORD; end record; for MSLG_FMTR_VERSION_TYPE use record FMTR_SVR at 0 range 0 .. 7; FMTR_HVR at 1 range 0 .. 7; FILLER_1 at 2 range 0 .. 15; end record; for MSLG_FMTR_VERSION_TYPE'SIZE use 32; MSLG_FMTR_VERSION_TYPE_INIT : constant MSLG_FMTR_VERSION_TYPE := (FMTR_SVR => 0, FMTR_HVR => 0, FILLER_1 => 0); type MSLG_VOLSER_VERSION_TYPE is record 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) HDR_CODE : UNSIGNED_LONGWORD; -- Header Code - from MSLG_DISK_TRN aggregate for ----Component(s) below are defined as comments since they ----overlap other fields ---- ----FMTR_VERSION : MSLG_FMTR_VERSION_TYPE; -- Disk Transfer Error (MSLG$K_DISK_TRN) ----BAD_LBN : UNSIGNED_LONGWORD; -- Bad LBN - from MSLG_REPLACE aggregate for -- Bad Block Replacement Attempted (MSLG$K_REPLACE ----SML_DSK : INTEGER_8; -- Controller or device dependent - used in MSLG_SML_DSK end record; for MSLG_VOLSER_VERSION_TYPE use record 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; HDR_CODE at 40 range 0 .. 31; ----Component representation spec(s) below are defined as ----comments since they overlap other fields ---- ----FMTR_VERSION at 40 range 0 .. 31; ----BAD_LBN at 40 range 0 .. 31; ----SML_DSK at 40 range 0 .. 7; end record; for MSLG_VOLSER_VERSION_TYPE'SIZE use 64; MSLG_VOLSER_VERSION_TYPE_INIT : constant MSLG_VOLSER_VERSION_TYPE := ( VOL_SER => 0, HDR_CODE => 0 ); 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 ----Component(s) below are defined as comments since they ----overlap other fields ---- ----CNT_ERR : INTEGER_8; -- Controller dependent data - previously contained -- in MSLG_CNT_ERR aggregate -- Controller Error (MSLG$K_CNT_ERR) UNIT_ID : UNSIGNED_QUADWORD; -- Unit ID ----Component(s) below are defined as comments since they ----overlap other fields ---- ----BUS_ADDR : ADDRESS; -- Host Memory Access Error (MSLG$K_BUS_ADDR) -- Bus Address - previously contained in -- MSLG_BUS_ADDR aggregate UNIT_SVR : UNSIGNED_BYTE; -- Unit software version UNIT_HVR : UNSIGNED_BYTE; -- Unit hardware version SDE_CYL : UNSIGNED_WORD; -- Cylinder - used in MSLG_SML_DSK for MSLG$K_SML_DSK ----Component(s) below are defined as comments since they ----overlap other fields ---- ----LEVEL_RETRY : MSLG_LEVEL_RETRY_TYPE; ----RPL_FLGS : MSLG_RPL_FLGS_TYPE; -- Replace Flags - used in MSLG_REPLACE for MSLG$K_REPLACE ML_ID : UNSIGNED_QUADWORD; -- Media loader identifier - ----Component(s) below are defined as comments since they ----overlap other fields ---- ----VOLSER_VERSION : MSLG_VOLSER_VERSION_TYPE; -- used in MSLG_LDR_ERR for MSLG$K_LDR_ERR 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; ----Component representation spec(s) below are defined as ----comments since they overlap other fields ---- ----CNT_ERR at 22 range 0 .. 7; UNIT_ID at 24 range 0 .. 63; ----Component representation spec(s) below are defined as ----comments since they overlap other fields ---- ----BUS_ADDR at 24 range 0 .. 31; UNIT_SVR at 32 range 0 .. 7; UNIT_HVR at 33 range 0 .. 7; SDE_CYL at 34 range 0 .. 15; ----Component representation spec(s) below are defined as ----comments since they overlap other fields ---- ----LEVEL_RETRY at 34 range 0 .. 15; ----RPL_FLGS at 34 range 0 .. 15; ML_ID at 36 range 0 .. 63; ----Component representation spec(s) below are defined as ----comments since they overlap other fields ---- ----VOLSER_VERSION at 36 range 0 .. 63; 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, SDE_CYL => 0, ML_ID => (0, 0) ); -- -- Controller Error (MSLG$K_CNT_ERR) -- -- Aggregate MSLG_CNT_ERR has been removed and it's fields have been -- incorporated into GENERIC_MSCP_ERRLOG. The following fields are -- specific to this error: -- CNT_ERR byte tag Z; /* Controller dependent data - this field is now -- -- Host Memory Access Error (MSLG$K_BUS_ADDR) -- -- Aggregate MSLG_BUS_ADDR has been removed and it's fields have been -- incorporated into GENERIC_MSCP_ERRLOG. The following fields are -- specific to this error: -- BUS_ADDR longword unsigned; /* Bus Address -- -- 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 : MSLG_GENERIC_MSCP_ERRLOG_TYPE; -- HDR_CODE - is now located in GENERIC_MSCP_ERRLOG DISK_TRN : INTEGER_8; -- Controller or disk dependent data end record; for MSLG_DISK_TRN_TYPE use record FILLER at 0 range 0 .. 351; 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 => MSLG_GENERIC_MSCP_ERRLOG_TYPE_INIT, DISK_TRN => 0); -- -- SDI Error (MSLG$K_SDI) -- type MSLG_SDI_TYPE is record GENERIC_MSCP_ERRLOG : MSLG_GENERIC_MSCP_ERRLOG_TYPE; SDI : UNSIGNED_BYTE_ARRAY (1 .. 12); -- SDI Information end record; for MSLG_SDI_TYPE use record GENERIC_MSCP_ERRLOG at 0 range 0 .. 351; SDI at 44 range 0 .. 95; end record; for MSLG_SDI_TYPE'SIZE use 448; MSLG_SDI_TYPE_INIT : constant MSLG_SDI_TYPE := (GENERIC_MSCP_ERRLOG => MSLG_GENERIC_MSCP_ERRLOG_TYPE_INIT, SDI => (others => 0)); -- -- Small Disk Error (MSLG$K_SML_DSK) -- -- Aggregate MSLG_SML_DSK has been removed and it's fields have been -- incorporated into GENERIC_MSCP_ERRLOG. The following fields are -- specific to this error: -- SDE_CYL word unsigned; /* Cylinder -- SML_DSK byte tag Z; /* Controller or device dependent -- -- 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 GENERIC_MSCP_ERRLOG : MSLG_GENERIC_MSCP_ERRLOG_TYPE; STI : UNSIGNED_BYTE_ARRAY (1 .. 20); -- STI Information end record; for MSLG_STI_ERR_TYPE use record GENERIC_MSCP_ERRLOG 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 := (GENERIC_MSCP_ERRLOG => MSLG_GENERIC_MSCP_ERRLOG_TYPE_INIT, STI => (others => 0)); -- -- Bad Block Replacement Attempted (MSLG$K_REPLACE) -- MSLG_K_REPLACE_MSGSIZ : constant := 54; -- Size of REPLACE msg for BBR error logging type MSLG_REPLACE_TYPE is record GENERIC_MSCP_ERRLOG : MSLG_GENERIC_MSCP_ERRLOG_TYPE; -- Replace Flags now located in GENERIC_MSCP_ERRLOG 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 GENERIC_MSCP_ERRLOG at 0 range 0 .. 351; 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 := (GENERIC_MSCP_ERRLOG => MSLG_GENERIC_MSCP_ERRLOG_TYPE_INIT, OLD_RBN => 0, NEW_RBN => 0, CAUSE => 0); -- -- Media Loader Errors (MSLG$K_LDR_ERR) -- type MSLG_LDR_ERR_TYPE is record GENERIC_MSCP_ERRLOG : MSLG_GENERIC_MSCP_ERRLOG_TYPE; -- The following fields have been moved to GENERIC_MSCP_ERRLOG 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 GENERIC_MSCP_ERRLOG at 0 range 0 .. 351; 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 := (GENERIC_MSCP_ERRLOG => MSLG_GENERIC_MSCP_ERRLOG_TYPE_INIT, ML_SVR => 0, ML_HVR => 0, ML_UNIT => 0, LDR_ERR => 0); end MSLGDEF;