|
|
1.1 ! root 1: /* ! 2: * Copyright (c) 1982, 1988 The Regents of the University of California. ! 3: * All rights reserved. ! 4: * ! 5: * Redistribution is only permitted until one year after the first shipment ! 6: * of 4.4BSD by the Regents. Otherwise, redistribution and use in source and ! 7: * binary forms are permitted provided that: (1) source distributions retain ! 8: * this entire copyright notice and comment, and (2) distributions including ! 9: * binaries display the following acknowledgement: This product includes ! 10: * software developed by the University of California, Berkeley and its ! 11: * contributors'' in the documentation or other materials provided with the ! 12: * distribution and in all advertising materials mentioning features or use ! 13: * of this software. Neither the name of the University nor the names of ! 14: * its contributors may be used to endorse or promote products derived from ! 15: * this software without specific prior written permission. ! 16: * THIS SOFTWARE IS PROVIDED AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED ! 17: * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF ! 18: * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ! 19: * ! 20: * @(#)saio.h 7.10 (Berkeley) 6/28/90 ! 21: */ ! 22: ! 23: #include "../ufs/fs.h" ! 24: #include "../ufs/dinode.h" ! 25: #include "saioctl.h" ! 26: #include "saerrno.h" ! 27: ! 28: #define UNIX "/vmunix" ! 29: #define NULL 0 ! 30: ! 31: /* ! 32: * Io block: includes an dinode, cells for the use of seek, etc., ! 33: * and a buffer. ! 34: */ ! 35: struct iob { ! 36: int i_flgs; /* see F_ below */ ! 37: int i_adapt; /* adapter or bus */ ! 38: int i_ctlr; /* controller */ ! 39: int i_unit; /* pseudo device unit */ ! 40: int i_part; /* disk partition */ ! 41: daddr_t i_boff; /* block offset on device */ ! 42: struct dinode i_ino; /* dinode, if file */ ! 43: daddr_t i_cyloff; /* cylinder offset on device */ ! 44: off_t i_offset; /* seek offset in file */ ! 45: dev_t i_dev; /* associated device */ ! 46: daddr_t i_bn; /* 1st block # of next read */ ! 47: char *i_ma; /* memory address of i/o buffer */ ! 48: int i_cc; /* character count of transfer */ ! 49: int i_error; /* error # return */ ! 50: int i_errcnt; /* error count for driver retries */ ! 51: int i_errblk; /* block # in error for error reporting */ ! 52: char i_buf[MAXBSIZE];/* i/o buffer */ ! 53: union { ! 54: struct fs ui_fs; /* file system super block info */ ! 55: char dummy[SBSIZE]; ! 56: } i_un; ! 57: }; ! 58: ! 59: #define i_fs i_un.ui_fs ! 60: #define i_bus i_adapt ! 61: ! 62: /* codes for sector header word 1 */ ! 63: #define HDR1_FMT22 0x1000 /* standard 16 bit format */ ! 64: #define HDR1_OKSCT 0xc000 /* sector ok */ ! 65: #define HDR1_SSF 0x2000 /* skip sector flag */ ! 66: ! 67: #define F_READ 0x0001 /* file opened for reading */ ! 68: #define F_WRITE 0x0002 /* file opened for writing */ ! 69: #define F_ALLOC 0x0004 /* buffer allocated */ ! 70: #define F_FILE 0x0008 /* file instead of device */ ! 71: #define F_NBSF 0x0010 /* no bad sector forwarding */ ! 72: #define F_ECCLM 0x0020 /* limit # of bits in ecc correction */ ! 73: #define F_SSI 0x0040 /* set skip sector inhibit */ ! 74: #define F_SEVRE 0x0080 /* Severe burnin (no retries, no ECC) */ ! 75: ! 76: /* io types */ ! 77: #define F_RDDATA 0x0100 /* read data */ ! 78: #define F_WRDATA 0x0200 /* write data */ ! 79: #define F_HDR 0x0400 /* include header on next i/o */ ! 80: #define F_CHECK 0x0800 /* perform check of data read/write */ ! 81: #define F_HCHECK 0x1000 /* perform check of header and data */ ! 82: ! 83: #define F_TYPEMASK 0xff00 ! 84: ! 85: #define READ F_READ ! 86: #define WRITE F_WRITE ! 87: ! 88: /* ! 89: * Lseek call. ! 90: */ ! 91: #define L_SET 0 /* absolute offset */ ! 92: ! 93: /* ! 94: * Device switch. ! 95: */ ! 96: struct devsw { ! 97: char *dv_name; ! 98: int (*dv_strategy)(); ! 99: int (*dv_open)(); ! 100: int (*dv_close)(); ! 101: int (*dv_ioctl)(); ! 102: }; ! 103: ! 104: extern struct devsw devsw[]; /* device array */ ! 105: extern int ndevs; /* number of elements in devsw[] */ ! 106: ! 107: #ifdef COMPAT_42 ! 108: /* ! 109: * Old drive description table. ! 110: * still used by some drivers for now. ! 111: */ ! 112: struct st { ! 113: short nsect; /* # sectors/track */ ! 114: short ntrak; /* # tracks/surfaces/heads */ ! 115: short nspc; /* # sectors/cylinder */ ! 116: short ncyl; /* # cylinders */ ! 117: short *off; /* partition offset table (cylinders) */ ! 118: }; ! 119: #endif ! 120: ! 121: #define NFILES 4 ! 122: extern struct iob iob[NFILES];
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.