date and time created 86/01/12 18:04:54 by sam
authorSam Leffler <sam@ucbvax.Berkeley.EDU>
Mon, 13 Jan 1986 10:04:54 +0000 (02:04 -0800)
committerSam Leffler <sam@ucbvax.Berkeley.EDU>
Mon, 13 Jan 1986 10:04:54 +0000 (02:04 -0800)
SCCS-vsn: sys/tahoe/stand/saio.h 1.1

usr/src/sys/tahoe/stand/saio.h [new file with mode: 0644]

diff --git a/usr/src/sys/tahoe/stand/saio.h b/usr/src/sys/tahoe/stand/saio.h
new file mode 100644 (file)
index 0000000..f37b20e
--- /dev/null
@@ -0,0 +1,126 @@
+/*     saio.h  1.1     86/01/12        */
+
+/*     saio.h  6.2     9/23/83 */
+
+/*
+ * Header file for standalone package
+ */
+
+/*
+ * Io block: includes an
+ * inode, cells for the use of seek, etc,
+ * and a buffer.
+ */
+struct iob {
+       int     i_flgs;         /* see F_ below */
+       struct  inode i_ino;    /* inode, if file */
+       int     i_unit;         /* pseudo device unit */
+       daddr_t i_boff;         /* block offset on device */
+       daddr_t i_cyloff;       /* cylinder offset on device */
+       off_t   i_offset;       /* seek offset in file */
+       daddr_t i_bn;           /* 1st block # of next read */
+       char    *i_ma;          /* memory address of i/o buffer */
+       int     i_cc;           /* character count of transfer */
+       int     i_error;        /* error # return */
+       int     i_errcnt;       /* error count for driver retries */
+       int     i_errblk;       /* block # in error for error reporting */
+       char    i_buf[MAXBSIZE];/* i/o buffer */
+       union {
+               struct fs ui_fs;        /* file system super block info */
+               char dummy[SBSIZE];
+       } i_un;
+};
+#define i_fs i_un.ui_fs
+#define NULL 0
+
+#define F_READ         0x1     /* file opened for reading */
+#define F_WRITE                0x2     /* file opened for writing */
+#define F_ALLOC                0x4     /* buffer allocated */
+#define F_FILE         0x8     /* file instead of device */
+#define F_NBSF         0x10    /* no bad sector forwarding */
+#define F_ECCLM                0x20    /* limit # of bits in ecc correction */
+#define F_SSI          0x40    /* set skip sector inhibit */
+#define F_SEVRE                0x80    /* Severe burnin (no retries, no ECC) */
+/* io types */
+#define        F_RDDATA        0x0100  /* read data */
+#define        F_WRDATA        0x0200  /* write data */
+#define F_HDR          0x0400  /* include header on next i/o */
+#define F_CHECK                0x0800  /* perform check of data read/write */
+#define F_HCHECK       0x1000  /* perform check of header and data */
+
+#define        F_TYPEMASK      0xff00
+
+/*
+ * Device switch.
+ */
+struct devsw {
+       char    *dv_name;
+       int     (*dv_strategy)();
+       int     (*dv_open)();
+       int     (*dv_close)();
+};
+
+struct devsw devsw[];
+
+/*
+ * Drive description table.
+ * Returned from SAIODEVDATA call.
+ */
+struct st {
+       short   nsect;          /* # sectors/track */
+       short   ntrak;          /* # tracks/surfaces/heads */
+       short   nspc;           /* # sectors/cylinder */
+       short   ncyl;           /* # cylinders */
+       short   *off;           /* partition offset table (cylinders) */
+};
+
+/*
+ * Request codes. Must be the same a F_XXX above
+ */
+#define        READ    1
+#define        WRITE   2
+
+#define        NBUFS   4
+
+char   b[NBUFS][MAXBSIZE];
+daddr_t        blknos[NBUFS];
+
+#define        NFILES  4
+struct iob iob[NFILES];
+
+extern int errno;      /* just like unix */
+
+/* error codes */
+#define        EBADF   1       /* bad file descriptor */
+#define        EOFFSET 2       /* relative seek not supported */
+#define        EDEV    3       /* improper device specification on open */
+#define        ENXIO   4       /* unknown device specified */
+#define        EUNIT   5       /* improper unit specification */
+#define        ESRCH   6       /* directory search for file failed */
+#define        EIO     7       /* generic error */
+#define        ECMD    10      /* undefined driver command */
+#define        EBSE    11      /* bad sector error */
+#define        EWCK    12      /* write check error */
+#define        EECC    13      /* uncorrectable ecc error */
+#define        EHER    14      /* hard error */
+
+/* ioctl's -- for disks just now */
+#define        SAIOHDR         (('d'<<8)|1)    /* next i/o includes header */
+#define        SAIOCHECK       (('d'<<8)|2)    /* next i/o checks data */
+#define        SAIOHCHECK      (('d'<<8)|3)    /* next i/o checks header & data */
+#define        SAIONOBAD       (('d'<<8)|4)    /* inhibit bad sector forwarding */
+#define        SAIODOBAD       (('d'<<8)|5)    /* enable bad sector forwarding */
+#define        SAIOECCLIM      (('d'<<8)|6)    /* limit ecc correction to 5 bits */
+#define        SAIOECCUNL      (('d'<<8)|7)    /* use standard ecc procedures */
+#define        SAIODEVDATA     (('d'<<8)|8)    /* get device data */
+#define        SAIOSSI         (('d'<<8)|9)    /* set skip sector inhibit */
+#define        SAIONOSSI       (('d'<<8)|10)   /* inhibit skip sector handling */
+#define        SAIOSSDEV       (('d'<<8)|11)   /* is device skip sector type? */
+#define        SAIODEBUG       (('d'<<8)|12)   /* enable/disable debugging */
+#define        SAIOSEVRE       (('d'<<8)|13)   /* severe burnin, no ECC, no retries */
+#define        SAIONSEVRE      (('d'<<8)|14)   /* clear severe burnin */
+
+/* codes for sector header word 1 */
+#define        HDR1_FMT22      0x1000  /* standard 16 bit format */
+#define        HDR1_OKSCT      0xc000  /* sector ok */
+#define        HDR1_SSF        0x2000  /* skip sector flag */