home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 15 / 15.iso / s / s053 / 8.ddi / usr / include / sys / erec.h < prev    next >
Encoding:
C/C++ Source or Header  |  1990-12-08  |  4.9 KB  |  207 lines

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