|
|
1.1 ! root 1: /* saio.h 6.2 9/23/83 */ ! 2: ! 3: /* ! 4: * Header file for standalone package ! 5: */ ! 6: ! 7: /* ! 8: * Io block: includes an ! 9: * inode, cells for the use of seek, etc, ! 10: * and a buffer. ! 11: */ ! 12: struct iob { ! 13: int i_flgs; /* see F_ below */ ! 14: struct inode i_ino; /* inode, if file */ ! 15: int i_unit; /* pseudo device unit */ ! 16: daddr_t i_boff; /* block offset on device */ ! 17: daddr_t i_cyloff; /* cylinder offset on device */ ! 18: off_t i_offset; /* seek offset in file */ ! 19: daddr_t i_bn; /* 1st block # of next read */ ! 20: char *i_ma; /* memory address of i/o buffer */ ! 21: int i_cc; /* character count of transfer */ ! 22: int i_error; /* error # return */ ! 23: int i_errcnt; /* error count for driver retries */ ! 24: int i_errblk; /* block # in error for error reporting */ ! 25: char i_buf[MAXBSIZE];/* i/o buffer */ ! 26: union { ! 27: struct fs ui_fs; /* file system super block info */ ! 28: char dummy[SBSIZE]; ! 29: } i_un; ! 30: }; ! 31: #define i_fs i_un.ui_fs ! 32: #define NULL 0 ! 33: ! 34: #define F_READ 0x1 /* file opened for reading */ ! 35: #define F_WRITE 0x2 /* file opened for writing */ ! 36: #define F_ALLOC 0x4 /* buffer allocated */ ! 37: #define F_FILE 0x8 /* file instead of device */ ! 38: #define F_NBSF 0x10 /* no bad sector forwarding */ ! 39: #define F_ECCLM 0x20 /* limit # of bits in ecc correction */ ! 40: #define F_SSI 0x40 /* set skip sector inhibit */ ! 41: #define F_SEVRE 0x80 /* Severe burnin (no retries, no ECC) */ ! 42: /* io types */ ! 43: #define F_RDDATA 0x0100 /* read data */ ! 44: #define F_WRDATA 0x0200 /* write data */ ! 45: #define F_HDR 0x0400 /* include header on next i/o */ ! 46: #define F_CHECK 0x0800 /* perform check of data read/write */ ! 47: #define F_HCHECK 0x1000 /* perform check of header and data */ ! 48: ! 49: #define F_TYPEMASK 0xff00 ! 50: ! 51: /* ! 52: * Device switch. ! 53: */ ! 54: struct devsw { ! 55: char *dv_name; ! 56: int (*dv_strategy)(); ! 57: int (*dv_open)(); ! 58: int (*dv_close)(); ! 59: int (*dv_ioctl)(); ! 60: }; ! 61: ! 62: struct devsw devsw[]; ! 63: ! 64: /* ! 65: * Drive description table. ! 66: * Returned from SAIODEVDATA call. ! 67: */ ! 68: struct st { ! 69: short nsect; /* # sectors/track */ ! 70: short ntrak; /* # tracks/surfaces/heads */ ! 71: short nspc; /* # sectors/cylinder */ ! 72: short ncyl; /* # cylinders */ ! 73: short *off; /* partition offset table (cylinders) */ ! 74: }; ! 75: ! 76: /* ! 77: * Request codes. Must be the same a F_XXX above ! 78: */ ! 79: #define READ 1 ! 80: #define WRITE 2 ! 81: ! 82: #define NBUFS 4 ! 83: ! 84: char b[NBUFS][MAXBSIZE]; ! 85: daddr_t blknos[NBUFS]; ! 86: ! 87: #define NFILES 4 ! 88: struct iob iob[NFILES]; ! 89: ! 90: extern int errno; /* just like unix */ ! 91: ! 92: /* error codes */ ! 93: #define EBADF 1 /* bad file descriptor */ ! 94: #define EOFFSET 2 /* relative seek not supported */ ! 95: #define EDEV 3 /* improper device specification on open */ ! 96: #define ENXIO 4 /* unknown device specified */ ! 97: #define EUNIT 5 /* improper unit specification */ ! 98: #define ESRCH 6 /* directory search for file failed */ ! 99: #define EIO 7 /* generic error */ ! 100: #define ECMD 10 /* undefined driver command */ ! 101: #define EBSE 11 /* bad sector error */ ! 102: #define EWCK 12 /* write check error */ ! 103: #define EECC 13 /* uncorrectable ecc error */ ! 104: #define EHER 14 /* hard error */ ! 105: ! 106: /* ioctl's -- for disks just now */ ! 107: #define SAIOHDR (('d'<<8)|1) /* next i/o includes header */ ! 108: #define SAIOCHECK (('d'<<8)|2) /* next i/o checks data */ ! 109: #define SAIOHCHECK (('d'<<8)|3) /* next i/o checks header & data */ ! 110: #define SAIONOBAD (('d'<<8)|4) /* inhibit bad sector forwarding */ ! 111: #define SAIODOBAD (('d'<<8)|5) /* enable bad sector forwarding */ ! 112: #define SAIOECCLIM (('d'<<8)|6) /* limit ecc correction to 5 bits */ ! 113: #define SAIOECCUNL (('d'<<8)|7) /* use standard ecc procedures */ ! 114: #define SAIODEVDATA (('d'<<8)|8) /* get device data */ ! 115: #define SAIOSSI (('d'<<8)|9) /* set skip sector inhibit */ ! 116: #define SAIONOSSI (('d'<<8)|10) /* inhibit skip sector handling */ ! 117: #define SAIOSSDEV (('d'<<8)|11) /* is device skip sector type? */ ! 118: #define SAIODEBUG (('d'<<8)|12) /* enable/disable debugging */ ! 119: #define SAIOSEVRE (('d'<<8)|13) /* severe burnin, no ECC, no retries */ ! 120: #define SAIONSEVRE (('d'<<8)|14) /* clear severe burnin */ ! 121: ! 122: /* codes for sector header word 1 */ ! 123: #define HDR1_FMT22 0x1000 /* standard 16 bit format */ ! 124: #define HDR1_OKSCT 0xc000 /* sector ok */ ! 125: #define HDR1_SSF 0x2000 /* skip sector flag */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.