The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/dev/ata/atapi-tape.h

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /*-
    2  * Copyright (c) 1998 - 2004 Søren Schmidt <sos@FreeBSD.org>
    3  * All rights reserved.
    4  *
    5  * Redistribution and use in source and binary forms, with or without
    6  * modification, are permitted provided that the following conditions
    7  * are met:
    8  * 1. Redistributions of source code must retain the above copyright
    9  *    notice, this list of conditions and the following disclaimer,
   10  *    without modification, immediately at the beginning of the file.
   11  * 2. Redistributions in binary form must reproduce the above copyright
   12  *    notice, this list of conditions and the following disclaimer in the
   13  *    documentation and/or other materials provided with the distribution.
   14  * 3. The name of the author may not be used to endorse or promote products
   15  *    derived from this software without specific prior written permission.
   16  *
   17  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
   18  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   19  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
   20  * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
   21  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
   22  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
   23  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
   24  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
   25  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
   26  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   27  *
   28  * $FreeBSD$
   29  */
   30 
   31 /* ATAPI tape drive Capabilities and Mechanical Status Page */
   32 struct ast_cappage {
   33     /* mode page data header */
   34     u_int8_t    data_length;                    /* total length of data */
   35     u_int8_t    medium_type;                    /* medium type (if any) */
   36     u_int8_t    reserved        :4;
   37     u_int8_t    mode            :3;             /* buffering mode */
   38     u_int8_t    write_protect   :1;             /* media is writeprotected */
   39     u_int8_t    blk_desc_len;                   /* block Descriptor Length */
   40 
   41     /* capabilities page */
   42     u_int8_t    page_code       :6;
   43 #define ATAPI_TAPE_CAP_PAGE     0x2a
   44 
   45     u_int8_t    reserved0_6     :1;
   46     u_int8_t    ps              :1;             /* parameters saveable */
   47     u_int8_t    page_length;                    /* page Length == 0x12 */
   48     u_int8_t    reserved2;
   49     u_int8_t    reserved3;
   50     u_int8_t    readonly        :1;             /* read Only Mode */
   51     u_int8_t    reserved4_1234  :4;
   52     u_int8_t    reverse         :1;             /* supports reverse direction */
   53     u_int8_t    reserved4_67    :2;
   54     u_int8_t    reserved5_012   :3;
   55     u_int8_t    eformat         :1;             /* supports ERASE formatting */
   56     u_int8_t    reserved5_4     :1;
   57     u_int8_t    qfa             :1;             /* supports QFA formats */
   58     u_int8_t    reserved5_67    :2;
   59     u_int8_t    lock            :1;             /* supports locking media */
   60     u_int8_t    locked          :1;             /* the media is locked */
   61     u_int8_t    prevent         :1;             /* defaults to prevent state */
   62     u_int8_t    eject           :1;             /* supports eject */
   63     u_int8_t    disconnect      :1;             /* can break request > ctl */
   64     u_int8_t    reserved6_5     :1;
   65     u_int8_t    ecc             :1;             /* supports error correction */
   66     u_int8_t    compress        :1;             /* supports data compression */
   67     u_int8_t    reserved7_0     :1;
   68     u_int8_t    blk512          :1;             /* supports 512b block size */
   69     u_int8_t    blk1024         :1;             /* supports 1024b block size */
   70     u_int8_t    reserved7_3456  :4;
   71     u_int8_t    blk32k          :1;             /* supports 32kb block size */
   72     u_int16_t   max_speed;                      /* supported speed in KBps */
   73     u_int16_t   max_defects;                    /* max stored defect entries */
   74     u_int16_t   ctl;                            /* continuous transfer limit */
   75     u_int16_t   speed;                          /* current Speed, in KBps */
   76     u_int16_t   buffer_size;                    /* buffer Size, in 512 bytes */
   77     u_int8_t    reserved18;
   78     u_int8_t    reserved19;
   79 };
   80 
   81 /* ATAPI OnStream ADR data transfer mode page (ADR unique) */
   82 struct ast_transferpage {
   83     /* mode page data header */
   84     u_int8_t    data_length;                    /* total length of data */
   85     u_int8_t    medium_type;                    /* medium type (if any) */
   86     u_int8_t    dsp;                            /* device specific parameter */
   87     u_int8_t    blk_desc_len;                   /* block Descriptor Length */
   88 
   89     /* data transfer page */
   90     u_int8_t    page_code       :6;
   91 #define ATAPI_TAPE_TRANSFER_PAGE     0x30
   92 
   93     u_int8_t    reserved0_6     :1;
   94     u_int8_t    ps              :1;             /* parameters saveable */
   95     u_int8_t    page_length;                    /* page Length == 0x02 */
   96     u_int8_t    reserved2;
   97     u_int8_t    read32k         :1;             /* 32k blk size (data only) */
   98     u_int8_t    read32k5        :1;             /* 32.5k blk size (data&AUX) */
   99     u_int8_t    reserved3_23    :2;
  100     u_int8_t    write32k        :1;             /* 32k blk size (data only) */
  101     u_int8_t    write32k5       :1;             /* 32.5k blk size (data&AUX) */
  102     u_int8_t    reserved3_6     :1;
  103     u_int8_t    streaming       :1;             /* streaming mode enable */
  104 };
  105 
  106 /* ATAPI OnStream ADR vendor identification mode page (ADR unique) */
  107 struct ast_identifypage {
  108     /* mode page data header */
  109     u_int8_t    data_length;                    /* total length of data */
  110     u_int8_t    medium_type;                    /* medium type (if any) */
  111     u_int8_t    dsp;                            /* device specific parameter */
  112     u_int8_t    blk_desc_len;                   /* block Descriptor Length */
  113 
  114     /* data transfer page */
  115     u_int8_t    page_code       :6;
  116 #define ATAPI_TAPE_IDENTIFY_PAGE     0x36
  117 
  118     u_int8_t    reserved0_6     :1;
  119     u_int8_t    ps              :1;             /* parameters saveable */
  120     u_int8_t    page_length;                    /* page Length == 0x06 */
  121     u_int8_t    ident[4];                       /* host id string */
  122     u_int8_t    reserved6;
  123     u_int8_t    reserved7;
  124 };
  125 
  126 /* ATAPI read position structure */
  127 struct ast_readposition {
  128     u_int8_t    reserved0_05    :6;
  129     u_int8_t    eop             :1;             /* end of partition */
  130     u_int8_t    bop             :1;             /* beginning of partition */
  131     u_int8_t    reserved1;
  132     u_int8_t    reserved2;
  133     u_int8_t    reserved3;
  134     u_int32_t   host;                           /* frame address in buffer */
  135     u_int32_t   tape;                           /* frame address on tape */
  136     u_int8_t    reserved12;
  137     u_int8_t    reserved13;
  138     u_int8_t    reserved14;
  139     u_int8_t    blks_in_buf;                    /* blocks in buffer */
  140     u_int8_t    reserved16;
  141     u_int8_t    reserved17;
  142     u_int8_t    reserved18;
  143     u_int8_t    reserved19;
  144 };
  145 
  146 struct ast_softc {
  147     struct ata_device           *device;        /* device softc */
  148     int                         lun;            /* logical device unit */
  149     int                         flags;          /* device state flags */
  150 #define         F_CTL_WARN              0x0001  /* warned about CTL wrong? */
  151 #define         F_WRITEPROTECT          0x0002  /* media is writeprotected */
  152 #define         F_DATA_WRITTEN          0x0004  /* data has been written */
  153 #define         F_FM_WRITTEN            0x0008  /* filemark has been written */
  154 #define         F_ONSTREAM              0x0100  /* OnStream ADR device */
  155 
  156     int                         blksize;        /* block size (512 | 1024) */
  157     struct mtx                  queue_mtx;      /* bio queue lock */
  158     struct bio_queue_head       queue;          /* queue of i/o requests */
  159     struct atapi_params         *param;         /* drive parameters table */
  160     struct ast_cappage          cap;            /* capabilities page info */
  161     struct devstat              *stats;         /* devstat entry */
  162     struct cdev *dev1, *dev2;   /* device place holders */
  163 };

Cache object: 876b25439c9cec7f0619edd94cd09ab9


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.