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