Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ errfile(4) — CX/UX 6.20

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

errdemon(1M)

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 {
     shorte_type;/∗ record type ∗/
     shorte_len;/∗ bytes in record (inc hdr) ∗/
     time_te_time;/∗ time of day ∗/
};

The permissible record types are as follows:

#define E_GOTS010/∗ start for CX/UX ∗/
#define E_STOP012/∗ stop ∗/
#define E_TCHG013 /∗ time change ∗/
#define E_BLK020/∗ block device error ∗/
#define E_STRAY030 /∗ stray interrupt ∗/
#define E_PRTY031/∗ memory parity ∗/
#define E_IOERR033 /∗ I/O bus error (series-3000 only) ∗/

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 {
     shorte_cpu;/∗ CPU type ∗/
     shorte_pad;  /∗(∗∗ pad to long word boundary ∗/
     struct utsnamee_name; /∗ system names ∗/
};

#define eend errhdr/∗ record header ∗/

struct etimchg {
     time_te_ntime;/∗ new time ∗/
};

Stray interrupts cause a record with the following format to be logged:

struct estray {
     inte_ipl;/∗ interrupt ipl ∗/
     inte_sbacty;/∗ active block devices ∗/
     physadre_saddr;/∗ stray loc or device addr ∗/
};

Memory subsystem errors may occur for various reasons.  This includes memory parity errors as well as I/O bus errors ("sysfault" errors).  Consult the appropriate architecture manual for more detailed information. 
 
Memory subsytem errors have the following record format:

struct ememory {
     inte_bus;/∗ bus ∗/
     inte_memerreg; /∗ memory error reg ∗/
     inte_hvmeaddr; /∗ hvme address ∗/
     inte_exreg;/∗ Additional status ∗/
};

I/O buserrors get logged in response to an HVME (bus 0) or VME (bus 1) I/O buserror interrupt.  They have the following format:

struct eioerr {
     inte_bus;/∗ bus ∗/
     inte_status;/∗ status bytes ∗/
};

Error records for block devices have the following format:

struct eblock {
     dev_te_dev;/∗ "true" major + minor dev no ∗/
     caddr_te_regloc;/∗ controller address ∗/
     struct iostat {
          longio_ops;/∗ number read/writes ∗/
          longio_misc;/∗ number "other" operations ∗/
          ushortio_unlog;/∗ number unlogged errors ∗/
     }         e_stats;
        shorte_bflags;/∗ read/write, error, etc ∗/
        shorte_cyloff;/∗ logical dev start cyl ∗/
        daddr_te_bnum;/∗ logical block number ∗/
        longe_bytes;/∗ number bytes to transfer ∗/
        caddr_te_memadd;/∗ buffer memory address ∗/
        shorte_bacty;/∗ other block I/O activity ∗/
        ushorte_rtry;/∗ number retries ∗/
        shorte_nreg;/∗ number device registers ∗/
};

The following values are used in the e_bflags word:

#define E_WRITE0 /∗ write operation ∗/
#define E_READ1 /∗ read operation ∗/
#define E_NOIO02/∗ no I/O pending ∗/
#define E_PHYS04/∗ physical I/O ∗/
#define E_MAP010/∗ Unibus map in use ∗/
#define E_ERROR020 /∗ I/O failed ∗/

SEE ALSO

errdemon(1M) in the CX/UX System Administration Manual. 

CX/UX Programmer’s Reference Manual

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026