home *** CD-ROM | disk | FTP | other *** search
/ Piper's Pit BBS/FTP: ibm 0010 - 0019 / ibm0010-0019 / ibm0010.tar / ibm0010 / UNIX3862.ZIP / U386-06.ZIP / U386-6.TD0 / usr / include / sys / erec.h < prev    next >
Encoding:
C/C++ Source or Header  |  1988-06-26  |  4.7 KB  |  202 lines

  1. /*    Copyright (c) 1984, 1986, 1987, 1988 AT&T    */
  2. /*      All Rights Reserved      */
  3.  
  4. /*    THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF AT&T    */
  5. /*    The copyright notice above does not evidence any       */
  6. /*    actual or intended publication of such source code.    */
  7.  
  8.  
  9. #ident    "@(#)head.sys:erec.h    1.3"
  10.  
  11. /*
  12.  * Every error record has a header as follows.
  13.  */
  14.  
  15.  
  16.  
  17. struct errhdr {
  18.     short    e_type;        /* record type */
  19.     short    e_len;        /* bytes in record (with header) */
  20.     time_t    e_time;        /* time of day */
  21. };
  22.  
  23. /*
  24.  * Error record types
  25.  */
  26.  
  27. #define E_GOTS    010        /* Start for UNIX/TS */
  28. #define E_GORT    011        /* Start for UNIX/RT */
  29. #define E_STOP    012        /* Stop */
  30. #define E_TCHG    013        /* Time change */
  31. #define E_CCHG    014        /* Configuration change */
  32. #define E_BLK    020        /* Block device error */
  33. #define E_STRAY    030        /* Stray interrupt */
  34. #define E_MEM    031        /* Memory error */
  35. #define E_CNTL    041        /* IO Controller error */
  36. #define E_SYS    042        /* System error */
  37. #define E_CAC    043        /* Cache error */
  38. #define E_PF    044        /* Prefetch error MAC 32 only */
  39.  
  40.  
  41. /* Device descriptors for logging start up record. */
  42.  
  43. struct ddesc {
  44.     char d_name[9];        /* Device name */
  45.     long lb_addr;        /* Device address */
  46.     long su_equip;        /* Device equippage */
  47. };
  48.  
  49.  
  50. /*
  51.  * Error logging startup record. One of these is
  52.  * sent to the logging daemon when logging is
  53.  * first activated.
  54.  */
  55.  
  56. struct estart {
  57.     short    e_cpu;        /* cpu type */
  58.     struct    utsname e_name;    /* system names */
  59.     int    e_mmcnt;    /* Memory size */
  60.     struct ddesc e_conf[NBEDT]; /* Configured hardware */
  61.     long    e_dcnt;        /* # devices found in EDT */
  62. };
  63.  
  64. /*
  65.  * Error logging termination record that is sent to the daemon
  66.  * when it stops error logging.
  67.  */
  68.  
  69. #define eend errhdr
  70.  
  71. /*
  72.  * A time change record is sent to the daemon whenever
  73.  * the system's time of day is changed.
  74.  */
  75.  
  76. struct etimchg {
  77.     time_t    e_ntime;    /* new time */
  78. };
  79.  
  80.  
  81. /*
  82.  * A configuration change message is sent to
  83.  * the error logging daemon whenever a block device driver
  84.  * is attached or detached (MERT only).
  85.  */
  86.  
  87. struct econfchg {
  88.     char    e_trudev;    /* "true" major device number */
  89.     char    e_cflag;    /* driver attached or detached */
  90. };
  91.  
  92. #define E_ATCH    1
  93. #define E_DTCH    0
  94.  
  95. /*
  96.  * Template for the error record that is logged by block device
  97.  * drivers.
  98.  */
  99.  
  100. struct eblock {
  101.     dev_t    e_num;        /* device number (major + minor) */
  102.     ushort    e_bytes;    /* number of bytes to transfer */
  103.     short    e_bflags;    /* read/write, error, etc */
  104.     daddr_t    e_bnum;        /* logical block number */
  105.     struct iostat e_stats;    /* unit I/O statistics */
  106.     paddr_t e_badd;        /* physical buffer address */
  107.     unsigned long    e_stat1;    /* job completion status */
  108.     unsigned long    e_stat2;    /* extended err status 1 */
  109.     unsigned long    e_stat3;    /* extended err status 2 */
  110. };
  111.  
  112. /*
  113.  * Flags (selected subset of flags in buffer header)
  114.  */
  115.  
  116. #define E_WRITE    0
  117. #define E_READ    1
  118. #define E_NOIO    02
  119. #define E_PHYS    04
  120. #define E_MAP    010
  121. #define E_ERROR    020
  122.  
  123. /*
  124.  * Template for the stray interrupt record that is logged
  125.  * every time an unexpected interrupt occurs.
  126.  */
  127.  
  128. struct estray {
  129.     unsigned int    e_saddr;    /* stray loc or device addr */
  130. };
  131.  
  132. /*
  133.  * Memory error record that is logged whenever one
  134.  * of those things occurs
  135.  */
  136.  
  137. struct emem {
  138.      long    e_mcsr[2];    /* registers: MASC CSR0, CSR1 */
  139. };
  140.  
  141. /*
  142.  * Template for the IO controller error reported via SYSERR 
  143.  */
  144.  
  145. struct ecntl {
  146.     char    dev_name[9];    /* device name */
  147.     long    lb_addr;    /* bus address */
  148.     long    unit_equip;    /* device equippage */
  149.     long    d_csr;        /* device csr content */
  150.     long    d_errcode;    /* device error code */
  151. };
  152.  
  153. /*
  154.  * Template for local bus SYSERR
  155.  */
  156.  
  157. struct esys {
  158.     char    md_name[9];    /* master device name */
  159.     long    mlb_addr;    /* master local bus address */
  160.     long    e_mcsr;        /* CSR content of local bus master */
  161.     char    sd_name[9];    /* slave device name */
  162.     long    slb_addr;    /* slave local bus address */
  163.     long    e_scsr;        /* CSR content of local bus slave */
  164. };
  165.  
  166.  
  167. /* This structure will be used to log a prefetch error reported via
  168.  * the dedicated PFERR interrupt.
  169.  */
  170.  
  171. struct    epf {
  172.     long    e_pc;        /* PC address of error */
  173.     long    e_psw;        /* PSW on error */
  174.     long    e_cccsr;    /* CC CSR on error */
  175.     char    e_dname[9];    /* Slave device name */
  176.     long    e_lbaddr;    /* Slave local bus address */
  177.     long    e_scsr1;    /* Slave CSR content */
  178.     long    e_scsr2;    /* Slave CSR content */
  179. };
  180.  
  181. /* This structure will be used to log a cache error */
  182.  
  183. struct ecache {
  184.     long    e_cccsr;    /* CC CSR on error */
  185.     char    e_dname[9];    /* Slave device name */
  186.     long    e_lbaddr;    /* Slave local bus address */
  187.     long    e_scsr1;    /* Slave CSR content */
  188.     long    e_scsr2;    /* Slave CSR content */
  189. };
  190.  
  191.  
  192. /*
  193.  * The following structure is used by geru() which finds and clears
  194.  * error data in device control and status registers.
  195.  */
  196.  
  197. struct eunit {
  198.     struct edt *edtp;    /* edt pointer to error device */
  199.     long csr1;        /* device control and status register */
  200.     long csr2;        /* address trap register if MASC is err dev */
  201. };
  202.