|
|
1.1 root 1: /*
2: * HISTORY
3: * $Log: scsi_tape.h,v $
4: * Revision 1.1 1993/03/21 18:13:02 cgd
5: * after 0.2.2 "stable" patches applied
6: *
7: * Revision 1.2 1993/01/26 18:39:08 julian
8: * add the 'write protected' bit in the device status struct.
9: *
10: * Revision 1.1 1992/09/26 22:10:21 julian
11: * Initial revision
12: *
13: *
14: * PATCHES MAGIC LEVEL PATCH THAT GOT US HERE
15: * -------------------- ----- ----------------------
16: * CURRENT PATCH LEVEL: 1 00098
17: * -------------------- ----- ----------------------
18: *
19: * 16 Feb 93 Julian Elischer ADDED for SCSI system
20: *
21: */
22:
23: /*
24: * SCSI tape interface description
25: */
26:
27: /*
28: * Written by Julian Elischer ([email protected])
29: * for TRW Financial Systems.
30: *
31: * TRW Financial Systems, in accordance with their agreement with Carnegie
32: * Mellon University, makes this software available to CMU to distribute
33: * or use in any manner that they see fit as long as this message is kept with
34: * the software. For this reason TFS also grants any other persons or
35: * organisations permission to use or modify this software.
36: *
37: * TFS supplies this software to be publicly redistributed
38: * on the understanding that TFS is not responsible for the correct
39: * functioning of this software in any circumstances.
40: *
41: */
42:
43: /*
44: * Ported to run under 386BSD by Julian Elischer ([email protected]) Sept 1992
45: */
46:
47: /*
48: * SCSI command format
49: */
50:
51:
52: struct scsi_rw_tape
53: {
54: u_char op_code;
55: u_char fixed:1;
56: u_char :4;
57: u_char lun:3;
58: u_char len[3];
59: u_char link:1;
60: u_char flag:1;
61: u_char :6;
62: } rw_tape;
63:
64: struct scsi_space
65: {
66: u_char op_code;
67: u_char code:2;
68: u_char :3;
69: u_char lun:3;
70: u_char number[3];
71: u_char link:1;
72: u_char flag:1;
73: u_char :6;
74: } space;
75: #define SP_BLKS 0
76: #define SP_FILEMARKS 1
77: #define SP_SEQ_FILEMARKS 2
78: #define SP_EOM 3
79:
80: struct scsi_write_filemarks
81: {
82: u_char op_code;
83: u_char :5;
84: u_char lun:3;
85: u_char number[3];
86: u_char link:1;
87: u_char flag:1;
88: u_char :6;
89: } write_filemarks;
90:
91: struct scsi_rewind
92: {
93: u_char op_code;
94: u_char immed:1;
95: u_char :4;
96: u_char lun:3;
97: u_char unused[3];
98: u_char link:1;
99: u_char flag:1;
100: u_char :6;
101: } rewind;
102:
103: struct scsi_load
104: {
105: u_char op_code;
106: u_char immed:1;
107: u_char :4;
108: u_char lun:3;
109: u_char unused[2];
110: u_char load:1;
111: u_char reten:1;
112: u_char :6;
113: u_char link:1;
114: u_char flag:1;
115: u_char :6;
116: } load;
117: #define LD_UNLOAD 0
118: #define LD_LOAD 1
119:
120: struct scsi_blk_limits
121: {
122: u_char op_code;
123: u_char :5;
124: u_char lun:3;
125: u_char unused[3];
126: u_char link:1;
127: u_char flag:1;
128: u_char :6;
129: } blk_limits;
130:
131: /*
132: * Opcodes
133: */
134:
135: #define REWIND 0x01
136: #define READ_BLK_LIMITS 0x05
137: #define READ_COMMAND_TAPE 0x08
138: #define WRITE_COMMAND_TAPE 0x0a
139: #define WRITE_FILEMARKS 0x10
140: #define SPACE 0x11
141: #define LOAD_UNLOAD 0x1b /* same as above */
142:
143:
144:
145: struct scsi_blk_limits_data
146: {
147: u_char reserved;
148: u_char max_length_2; /* Most significant */
149: u_char max_length_1;
150: u_char max_length_0; /* Least significant */
151: u_char min_length_1; /* Most significant */
152: u_char min_length_0; /* Least significant */
153: };
154:
155: struct scsi_mode_header_tape
156: {
157: u_char data_length; /* Sense data length */
158: u_char medium_type;
159: u_char speed:4;
160: u_char buf_mode:3;
161: u_char write_protected:1;
162: u_char blk_desc_len;
163: };
164:
165:
166: #define QIC_120 0x0f
167: #define QIC_150 0x10
168: #define QIC_320 0x11
169: #define QIC_525 0x11
170: #define QIC_1320 0x12
171:
172:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.