|
|
1.1 root 1: .\" Copyright (c) 1983 Regents of the University of California.
2: .\" All rights reserved. The Berkeley software License Agreement
3: .\" specifies the terms and conditions for redistribution.
4: .\"
5: .\" @(#)mtio.4 6.2 (Berkeley) 5/16/86
6: .\"
7: .TH MTIO 4 "May 16, 1986"
8: .UC 5
9: .SH NAME
10: mtio \- UNIX magtape interface
11: .SH DESCRIPTION
12: The files
13: .I "mt0, ..., mt15"
14: refer to the UNIX magtape drives,
15: which may be on the MASSBUS using the TM03 formatter
16: .IR ht (4),
17: or TM78 formatter,
18: .IR mt (4),
19: or on the UNIBUS using either the TM11 or TS11 formatters
20: .IR tm (4),
21: TU45 compatible formatters,
22: .IR ut (4),
23: or
24: .IR ts (4).
25: The following description applies to any of the transport/controller pairs.
26: The files
27: .I "mt0, ..., mt7"
28: are 800bpi (or the transport's lowest density),
29: .I "mt8, ..., mt15"
30: are 1600bpi (or the transport's second density), and
31: .I "mt16, ..., mt23"
32: are 6250bpi (or the transport's third density).
33: (But note that only 1600 bpi is available with the TS11.)
34: The files
35: .IR "mt0, ..., mt3" ,
36: .IR "mt8, ..., mt11" ,
37: and
38: .I "mt16, ..., mt19"
39: are rewound when closed; the others are not.
40: When a file open for writing is closed, two end-of-files are written.
41: If the tape is not to be rewound
42: it is positioned with the head between the two
43: tapemarks.
44: .PP
45: A standard tape consists of a
46: series of 1024 byte records terminated by an
47: end-of-file.
48: To the extent possible, the system makes
49: it possible, if inefficient, to treat
50: the tape like any other file.
51: Seeks have their usual meaning and it is possible
52: to read or write a byte at a time.
53: Writing in very small units is inadvisable,
54: however, because it uses most of the tape in record
55: gaps.
56: .PP
57: The
58: .I mt
59: files discussed above are useful
60: when it is desired to access the tape in a way
61: compatible with ordinary files.
62: When foreign tapes are to be dealt with, and especially
63: when long records are to be read or written, the
64: `raw' interface is appropriate.
65: The associated files are named
66: .I "rmt0, ..., rmt23,"
67: but the same minor-device considerations as for the regular files still apply.
68: A number of other ioctl operations are available
69: on raw magnetic tape.
70: The following definitions are from
71: .RI < sys/mtio.h >:
72: .PP
73: .nf
74: /*
75: * Structures and definitions for mag tape io control commands
76: */
77:
78: /* structure for MTIOCTOP - mag tape op command */
79: struct mtop {
80: short mt_op; /* operations defined below */
81: daddr_t mt_count; /* how many of them */
82: };
83:
84: /* operations */
85: #define MTWEOF 0 /* write an end-of-file record */
86: #define MTFSF 1 /* forward space file */
87: #define MTBSF 2 /* backward space file */
88: #define MTFSR 3 /* forward space record */
89: #define MTBSR 4 /* backward space record */
90: #define MTREW 5 /* rewind */
91: #define MTOFFL 6 /* rewind and put the drive offline */
92: #define MTNOP 7 /* no operation, sets status only */
93: #define MTCACHE 8 /* enable controller cache */
94: #define MTNOCACHE 9 /* disable controller cache */
95:
96: /* structure for MTIOCGET - mag tape get status command */
97:
98: struct mtget {
99: short mt_type; /* type of magtape device */
100: /* the following two registers are grossly device dependent */
101: short mt_dsreg; /* ``drive status'' register */
102: short mt_erreg; /* ``error'' register */
103: /* end device-dependent registers */
104: short mt_resid; /* residual count */
105: /* the following two are not yet implemented */
106: daddr_t mt_fileno; /* file number of current position */
107: daddr_t mt_blkno; /* block number of current position */
108: /* end not yet implemented */
109: };
110:
111: /*
112: * Constants for mt_type byte. These are the same
113: * for other controllers compatible with the types listed.
114: */
115: #define MT_ISTS 0x01 /* TS-11 */
116: #define MT_ISHT 0x02 /* TM03 Massbus: TE16, TU45, TU77 */
117: #define MT_ISTM 0x03 /* TM11/TE10 Unibus */
118: #define MT_ISMT 0x04 /* TM78/TU78 Massbus */
119: #define MT_ISUT 0x05 /* SI TU-45 emulation on Unibus */
120: #define MT_ISCPC 0x06 /* SUN */
121: #define MT_ISAR 0x07 /* SUN */
122: #define MT_ISTMSCP 0x08 /* DEC TMSCP protocol (TU81, TK50) */
123:
124: /* mag tape io control commands */
125: #define MTIOCTOP _IOW(m, 1, struct mtop) /* do a mag tape op */
126: #define MTIOCGET _IOR(m, 2, struct mtget) /* get tape status */
127: #define MTIOCIEOT _IO(m, 3) /* ignore EOT error */
128: #define MTIOCEEOT _IO(m, 4) /* enable EOT error */
129:
130: #ifndef KERNEL
131: #define DEFTAPE "/dev/rmt12"
132: #endif
133: .fi
134: .ft R
135: .PP
136: Each
137: .I read
138: or
139: .I write
140: call reads or writes the next record on the tape.
141: In the write case the record has the same length as the
142: buffer given.
143: During a read, the record size is passed
144: back as the number of bytes read, provided it is no greater
145: than the buffer size;
146: if the record is long, an error is indicated.
147: In raw tape I/O seeks are ignored.
148: A zero byte count is returned when a tape mark is read,
149: but another read will fetch the first record of the
150: new tape file.
151: .SH FILES
152: /dev/mt?
153: .br
154: /dev/rmt?
155: .SH "SEE ALSO"
156: mt(1),
157: tar(1),
158: tp(1),
159: ht(4),
160: tm(4),
161: ts(4),
162: mt(4),
163: ut(4)
164: .SH BUGS
165: The status should be returned in a device independent format.
166: .PP
167: The special file naming should be redone in a more consistent and
168: understandable manner.
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.