1 /* SPDX-License-Identifier: GPL-2.0 WITH Linux 1 2 /* 3 * linux/mtio.h header file for Linux. Written 4 * 5 * Modified for special ioctls provided by zft 6 * by C.-J. Heine. 7 */ 8 9 #ifndef _LINUX_MTIO_H 10 #define _LINUX_MTIO_H 11 12 #include <linux/types.h> 13 #include <linux/ioctl.h> 14 15 /* 16 * Structures and definitions for mag tape io 17 */ 18 19 /* structure for MTIOCTOP - mag tape op comman 20 struct mtop { 21 short mt_op; /* operations 22 int mt_count; /* how many of 23 }; 24 25 /* Magnetic Tape operations [Not all operation 26 #define MTRESET 0 /* +reset drive in cas 27 #define MTFSF 1 /* forward space over 28 * position at first r 29 */ 30 #define MTBSF 2 /* backward space File 31 #define MTFSR 3 /* forward space recor 32 #define MTBSR 4 /* backward space reco 33 #define MTWEOF 5 /* write an end-of-fil 34 #define MTREW 6 /* rewind */ 35 #define MTOFFL 7 /* rewind and put the 36 #define MTNOP 8 /* no op, set status o 37 #define MTRETEN 9 /* retension tape */ 38 #define MTBSFM 10 /* +backward space Fil 39 #define MTFSFM 11 /* +forward space File 40 #define MTEOM 12 /* goto end of recorde 41 * MTEOM positions aft 42 * appending another f 43 */ 44 #define MTERASE 13 /* erase tape -- be ca 45 46 #define MTRAS1 14 /* run self test 1 (no 47 #define MTRAS2 15 /* run self test 2 (de 48 #define MTRAS3 16 /* reserved for self t 49 50 #define MTSETBLK 20 /* set block length (S 51 #define MTSETDENSITY 21 /* set tape density (S 52 #define MTSEEK 22 /* seek to block (Tand 53 #define MTTELL 23 /* tell block (Tandber 54 #define MTSETDRVBUFFER 24 /* set the drive buf 55 /* ordinary buffered o 56 #define MTFSS 25 /* space forward over 57 #define MTBSS 26 /* space backward over 58 #define MTWSM 27 /* write setmarks */ 59 60 #define MTLOCK 28 /* lock the drive door 61 #define MTUNLOCK 29 /* unlock the drive do 62 #define MTLOAD 30 /* execute the SCSI lo 63 #define MTUNLOAD 31 /* execute the SCSI un 64 #define MTCOMPRESSION 32/* control compression 65 #define MTSETPART 33 /* Change the active t 66 #define MTMKPART 34 /* Format the tape wit 67 #define MTWEOFI 35 /* write an end-of-fil 68 69 /* structure for MTIOCGET - mag tape get statu 70 71 struct mtget { 72 long mt_type; /* type of mag 73 long mt_resid; /* residual co 74 * number 75 * number 76 * number 77 */ 78 /* the following registers are device 79 long mt_dsreg; /* status regi 80 long mt_gstat; /* generic (de 81 long mt_erreg; /* error regis 82 /* The next two fields are not always 83 __kernel_daddr_t mt_fileno; /* num 84 __kernel_daddr_t mt_blkno; /* cur 85 }; 86 87 88 89 /* 90 * Constants for mt_type. Not all of these are 91 * and these are not all of the ones that are 92 */ 93 #define MT_ISUNKNOWN 0x01 94 #define MT_ISQIC02 0x02 /* Gen 95 #define MT_ISWT5150 0x03 /* Wan 96 #define MT_ISARCHIVE_5945L2 0x04 /* Arc 97 #define MT_ISCMSJ500 0x05 /* CMS 98 #define MT_ISTDC3610 0x06 /* Tan 99 #define MT_ISARCHIVE_VP60I 0x07 /* Arc 100 #define MT_ISARCHIVE_2150L 0x08 /* Arc 101 #define MT_ISARCHIVE_2060L 0x09 /* Arc 102 #define MT_ISARCHIVESC499 0x0A /* Arc 103 #define MT_ISQIC02_ALL_FEATURES 0x0F /* Gen 104 #define MT_ISWT5099EEN24 0x11 /* Wan 105 #define MT_ISTEAC_MT2ST 0x12 /* Tea 106 #define MT_ISEVEREX_FT40A 0x32 /* Eve 107 #define MT_ISDDS1 0x51 /* DDS 108 #define MT_ISDDS2 0x52 /* DDS 109 #define MT_ISONSTREAM_SC 0x61 /* OnSt 110 and 111 #define MT_ISSCSI1 0x71 /* Gen 112 #define MT_ISSCSI2 0x72 /* Gen 113 114 /* QIC-40/80/3010/3020 ftape supported drives. 115 * 20bit vendor ID + 0x800000 (see ftape-vendo 116 */ 117 #define MT_ISFTAPE_UNKNOWN 0x800000 /* ob 118 #define MT_ISFTAPE_FLAG 0x800000 119 120 121 /* structure for MTIOCPOS - mag tape get posit 122 123 struct mtpos { 124 long mt_blkno; /* current blo 125 }; 126 127 128 /* mag tape io control commands */ 129 #define MTIOCTOP _IOW('m', 1, struct mt 130 #define MTIOCGET _IOR('m', 2, struct mt 131 #define MTIOCPOS _IOR('m', 3, struct mt 132 133 134 /* Generic Mag Tape (device independent) statu 135 * mt_gstat -- HP-UX compatible. 136 * There is room for more generic status bits 137 * know which of them are reserved. At least t 138 * be added to make this really useful. 139 */ 140 #define GMT_EOF(x) ((x) & 0x80000 141 #define GMT_BOT(x) ((x) & 0x40000 142 #define GMT_EOT(x) ((x) & 0x20000 143 #define GMT_SM(x) ((x) & 0x10000 144 #define GMT_EOD(x) ((x) & 0x08000 145 #define GMT_WR_PROT(x) ((x) & 0x04000 146 /* #define GMT_ ? ((x) & 0x02000 147 #define GMT_ONLINE(x) ((x) & 0x01000 148 #define GMT_D_6250(x) ((x) & 0x00800 149 #define GMT_D_1600(x) ((x) & 0x00400 150 #define GMT_D_800(x) ((x) & 0x00200 151 /* #define GMT_ ? ((x) & 0x00100 152 /* #define GMT_ ? ((x) & 0x00080 153 #define GMT_DR_OPEN(x) ((x) & 0x00040 154 /* #define GMT_ ? ((x) & 0x00020 155 #define GMT_IM_REP_EN(x) ((x) & 0x00010 156 #define GMT_CLN(x) ((x) & 0x00008 157 /* 15 generic status bits unused */ 158 159 160 /* SCSI-tape specific definitions */ 161 /* Bitfield shifts in the status */ 162 #define MT_ST_BLKSIZE_SHIFT 0 163 #define MT_ST_BLKSIZE_MASK 0xffffff 164 #define MT_ST_DENSITY_SHIFT 24 165 #define MT_ST_DENSITY_MASK 0xff000000 166 167 #define MT_ST_SOFTERR_SHIFT 0 168 #define MT_ST_SOFTERR_MASK 0xffff 169 170 /* Bitfields for the MTSETDRVBUFFER ioctl */ 171 #define MT_ST_OPTIONS 0xf0000000 172 #define MT_ST_BOOLEANS 0x10000000 173 #define MT_ST_SETBOOLEANS 0x30000000 174 #define MT_ST_CLEARBOOLEANS 0x40000000 175 #define MT_ST_WRITE_THRESHOLD 0x20000000 176 #define MT_ST_DEF_BLKSIZE 0x50000000 177 #define MT_ST_DEF_OPTIONS 0x60000000 178 #define MT_ST_TIMEOUTS 0x70000000 179 #define MT_ST_SET_TIMEOUT (MT_ST_TIMEOUT 180 #define MT_ST_SET_LONG_TIMEOUT (MT_ST_TIMEOUT 181 #define MT_ST_SET_CLN 0x80000000 182 183 #define MT_ST_BUFFER_WRITES 0x1 184 #define MT_ST_ASYNC_WRITES 0x2 185 #define MT_ST_READ_AHEAD 0x4 186 #define MT_ST_DEBUGGING 0x8 187 #define MT_ST_TWO_FM 0x10 188 #define MT_ST_FAST_MTEOM 0x20 189 #define MT_ST_AUTO_LOCK 0x40 190 #define MT_ST_DEF_WRITES 0x80 191 #define MT_ST_CAN_BSR 0x100 192 #define MT_ST_NO_BLKLIMS 0x200 193 #define MT_ST_CAN_PARTITIONS 0x400 194 #define MT_ST_SCSI2LOGICAL 0x800 195 #define MT_ST_SYSV 0x1000 196 #define MT_ST_NOWAIT 0x2000 197 #define MT_ST_SILI 0x4000 198 #define MT_ST_NOWAIT_EOF 0x8000 199 200 /* The mode parameters to be controlled. Param 201 #define MT_ST_CLEAR_DEFAULT 0xfffff 202 #define MT_ST_DEF_DENSITY (MT_ST_DEF_OPT 203 #define MT_ST_DEF_COMPRESSION (MT_ST_DEF_OPT 204 #define MT_ST_DEF_DRVBUFFER (MT_ST_DEF_OPT 205 206 /* The offset for the arguments for the specia 207 #define MT_ST_HPLOADER_OFFSET 10000 208 209 #endif /* _LINUX_MTIO_H */ 210
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.