home *** CD-ROM | disk | FTP | other *** search
/ H4CK3R 4 / hacker04 / 04_HACK04.ISO / darwin / darwinx86.iso / usr / include / sys / mtio.h < prev    next >
Encoding:
C/C++ Source or Header  |  2001-09-30  |  6.7 KB  |  164 lines

  1. /*
  2.  * Copyright (c) 2000 Apple Computer, Inc. All rights reserved.
  3.  *
  4.  * @APPLE_LICENSE_HEADER_START@
  5.  * 
  6.  * The contents of this file constitute Original Code as defined in and
  7.  * are subject to the Apple Public Source License Version 1.1 (the
  8.  * "License").  You may not use this file except in compliance with the
  9.  * License.  Please obtain a copy of the License at
  10.  * http://www.apple.com/publicsource and read it before using this file.
  11.  * 
  12.  * This Original Code and all software distributed under the License are
  13.  * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
  14.  * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
  15.  * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
  16.  * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT.  Please see the
  17.  * License for the specific language governing rights and limitations
  18.  * under the License.
  19.  * 
  20.  * @APPLE_LICENSE_HEADER_END@
  21.  */
  22. /* Copyright (c) 1995 NeXT Computer, Inc. All Rights Reserved */
  23. /*
  24.  * Copyright (c) 1982, 1986, 1993
  25.  *    The Regents of the University of California.  All rights reserved.
  26.  *
  27.  * Redistribution and use in source and binary forms, with or without
  28.  * modification, are permitted provided that the following conditions
  29.  * are met:
  30.  * 1. Redistributions of source code must retain the above copyright
  31.  *    notice, this list of conditions and the following disclaimer.
  32.  * 2. Redistributions in binary form must reproduce the above copyright
  33.  *    notice, this list of conditions and the following disclaimer in the
  34.  *    documentation and/or other materials provided with the distribution.
  35.  * 3. All advertising materials mentioning features or use of this software
  36.  *    must display the following acknowledgement:
  37.  *    This product includes software developed by the University of
  38.  *    California, Berkeley and its contributors.
  39.  * 4. Neither the name of the University nor the names of its contributors
  40.  *    may be used to endorse or promote products derived from this software
  41.  *    without specific prior written permission.
  42.  *
  43.  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  44.  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  45.  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  46.  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  47.  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  48.  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  49.  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  50.  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  51.  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  52.  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  53.  * SUCH DAMAGE.
  54.  *
  55.  *    @(#)mtio.h    8.1 (Berkeley) 6/2/93
  56.  */
  57.  
  58. #ifndef    _SYS_MTIO_H_
  59. #define _SYS_MTIO_H_
  60.  
  61. /*
  62.  * Structures and definitions for mag tape io control commands
  63.  */
  64.  
  65. /* structure for MTIOCTOP - mag tape op command */
  66. struct mtop {
  67.     short    mt_op;        /* operations defined below */
  68.     daddr_t    mt_count;    /* how many of them */
  69. };
  70.  
  71. /* operations */
  72. #define MTWEOF        0    /* write an end-of-file record */
  73. #define MTFSF        1    /* forward space file */
  74. #define MTBSF        2    /* backward space file */
  75. #define MTFSR        3    /* forward space record */
  76. #define MTBSR        4    /* backward space record */
  77. #define MTREW        5    /* rewind */
  78. #define MTOFFL        6    /* rewind and put the drive offline */
  79. #define MTNOP        7    /* no operation, sets status only */
  80. #define MTRETEN        8    /* retension */
  81. #define MTERASE        9    /* erase entire tape */
  82. #define MTEOM        10    /* forward to end of media */
  83. #define MTNBSF        11    /* backward space to beginning of file */
  84. #define MTCACHE        12    /* enable controller cache */
  85. #define MTNOCACHE    13    /* disable controller cache */
  86. #define MTSETBSIZ    14    /* set block size; 0 for variable */
  87. #define MTSETDNSTY    15    /* set density code for current mode */
  88.  
  89. /* structure for MTIOCGET - mag tape get status command */
  90.  
  91. struct mtget {
  92.     short    mt_type;    /* type of magtape device */
  93. /* the following two registers are grossly device dependent */
  94.     u_short    mt_dsreg;    /* ``drive status'' register. SCSI sense byte 0x02.  */
  95.     u_short    mt_erreg;    /* ``error'' register. SCSI sense byte 0x0C. */
  96.     u_short mt_ext_err0;    /* SCSI sense bytes 0x13..0x14 */
  97.     u_short mt_ext_err1;    /* SCSI sense bytes 0x15..0x16 */
  98. /* end device-dependent registers */
  99.     short    mt_resid;    /* residual count */
  100. /* the following two are not yet implemented */
  101.     daddr_t    mt_fileno;    /* file number of current position */
  102.     daddr_t    mt_blkno;    /* block number of current position */
  103. /* end not yet implemented */
  104.     daddr_t    mt_blksiz;    /* current block size */
  105.     daddr_t    mt_density;    /* current density code */
  106.     daddr_t    mt_mblksiz[4];    /* block size for different modes */
  107.     daddr_t mt_mdensity[4];    /* density codes for different modes */
  108. };
  109.  
  110. /*
  111.  * Constants for mt_type byte.  These are the same
  112.  * for controllers compatible with the types listed.
  113.  */
  114. #define    MT_ISTS        0x01        /* TS-11 */
  115. #define    MT_ISHT        0x02        /* TM03 Massbus: TE16, TU45, TU77 */
  116. #define    MT_ISTM        0x03        /* TM11/TE10 Unibus */
  117. #define    MT_ISMT        0x04        /* TM78/TU78 Massbus */
  118. #define    MT_ISUT        0x05        /* SI TU-45 emulation on Unibus */
  119. #define    MT_ISCPC    0x06        /* SUN */
  120. #define    MT_ISAR        0x07        /* SUN */
  121. #define    MT_ISTMSCP    0x08        /* DEC TMSCP protocol (TU81, TK50) */
  122. #define MT_ISCY        0x09        /* CCI Cipher */
  123. #define MT_ISCT        0x0a        /* HP 1/4 tape */
  124. #define MT_ISFHP    0x0b        /* HP 7980 1/2 tape */
  125. #define MT_ISEXABYTE    0x0c        /* Exabyte */
  126. #define MT_ISEXA8200    0x0c        /* Exabyte EXB-8200 */
  127. #define MT_ISEXA8500    0x0d        /* Exabyte EXB-8500 */
  128. #define MT_ISVIPER1    0x0e        /* Archive Viper-150 */
  129. #define MT_ISPYTHON    0x0f        /* Archive Python (DAT) */
  130. #define MT_ISHPDAT    0x10        /* HP 35450A DAT drive */
  131. #define MT_ISWANGTEK    0x11        /* WANGTEK 5150ES */
  132. #define MT_ISCALIPER    0x12        /* Caliper CP150 */
  133. #define MT_ISWTEK5099    0x13        /* WANGTEK 5099ES */
  134. #define MT_ISVIPER2525    0x14        /* Archive Viper 2525 */
  135. #define MT_ISMFOUR    0x11        /* M4 Data 1/2 9track drive */
  136. #define MT_ISTK50    0x12        /* DEC SCSI TK50 */
  137. #define MT_ISMT02    0x13        /* Emulex MT02 SCSI tape controller */
  138. #define MT_ISGS        0x14        /* Generic SCSI Tape */
  139.  
  140. /* mag tape io control commands */
  141. #define    MTIOCTOP    _IOW('m', 1, struct mtop)    /* do a mag tape op */
  142. #define    MTIOCGET    _IOR('m', 2, struct mtget)    /* get tape status */
  143. #define MTIOCIEOT    _IO('m', 3)            /* ignore EOT error */
  144. #define MTIOCEEOT    _IO('m', 4)            /* enable EOT error */
  145.  
  146. #ifndef KERNEL
  147. #define    DEFTAPE    "/dev/rst0"
  148. #endif
  149.  
  150. #ifdef    KERNEL
  151. /*
  152.  * minor device number
  153.  */
  154.  
  155. #define    T_UNIT        003        /* unit selection */
  156. #define    T_NOREWIND    004        /* no rewind on close */
  157. #define    T_DENSEL    030        /* density select */
  158. #define    T_800BPI    000        /* select  800 bpi */
  159. #define    T_1600BPI    010        /* select 1600 bpi */
  160. #define    T_6250BPI    020        /* select 6250 bpi */
  161. #define    T_BADBPI    030        /* undefined selection */
  162. #endif
  163. #endif    /* !_SYS_MTIO_H_ */
  164.