ERRFILE(4) ERRFILE(4)
NAME
errfile - error-log file format
DESCRIPTION
When hardware errors are detected by the system, an error
record is generated and passed to the error-logging daemon
for recording in the error log for later analysis. The
default error log is /usr/adm/errfile.
The format of an error record depends on the type of error
that was encountered. Every record, however, has a header
with the following format:
struct errhdr {
short etype; /* record type */
short elen; /* bytes in record (inc hdr) */
timet etime; /* time of day */
};
The permissible record types are as follows:
#define EGOTS 010 /* start */
#define EGORT 011 /* start for RT */
#define ESTOP 012 /* stop */
#define ETCHG 013 /* time change */
#define ECCHG 014 /* configuration change */
#define EBLK 020 /* block device error */
#define ESTRAY 030 /* stray interrupt */
#define EPRTY 031 /* memory parity */
Some records in the error file are of an administrative
nature. These include the startup record that is entered
into the file when logging is activated, the stop record
that is written if the daemon is terminated ``gracefully'',
and the time-change record that is used to account for
changes in the system's time-of-day. These records have the
following formats:
struct estart {
short ecpu; /* CPU type */
Page 1 May 1989
ERRFILE(4) ERRFILE(4)
struct utsname ename; /* system names */
};
#define eend errhdr /* record header */
struct etimchg {
timet entime; /* new time */
};
Stray interrupts cause a record with the following format to
be logged:
struct estray {
uint esaddr; /* stray loc or device addr */
};
Generation of memory subsystem errors is not supported in
this release.
Error records for block devices have the following format:
struct eblock {
devt edev; /* "true" major + minor dev no */
physadr eregloc; /* controller address */
short ebacty; /* other block I/O activity */
struct iostat {
long ioops; /* number read/writes */
long iomisc; /* number "other" operations */
ushort iounlog; /* number unlogged errors */
} estats;
short ebflags; /* read/write, error, etc */
short ecyloff; /* logical dev start cyl */
daddrt ebnum; /* logical block number */
ushort ebytes; /* number bytes to transfer */
paddrt ememadd; /* buffer memory address */
ushort ertry; /* number retries */
short enreg; /* number device registers */
};
The following values are used in the e_bflags word:
Page 2 May 1989
ERRFILE(4) ERRFILE(4)
#define EWRITE 0 /* write operation */
#define EREAD 1 /* read operation */
#define ENOIO 02 /* no I/O pending */
#define EPHYS 04 /* physical I/O */
#define EFORMAT 010 /* Formatting Disk*/
#define EERROR 020 /* I/O failed */
SEE ALSO
errdemon(1M).
Page 3 May 1989