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/scsipi/scsipi_disk.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 /*      $NetBSD: scsipi_disk.h,v 1.15 2005/02/01 00:19:34 reinoud Exp $ */
    2 
    3 /*
    4  * SCSI and SCSI-like interfaces description
    5  */
    6 
    7 /*
    8  * Some lines of this file come from a file of the name "scsi.h"
    9  * distributed by OSF as part of mach2.5,
   10  *  so the following disclaimer has been kept.
   11  *
   12  * Copyright 1990 by Open Software Foundation,
   13  * Grenoble, FRANCE
   14  *
   15  *              All Rights Reserved
   16  *
   17  *   Permission to use, copy, modify, and distribute this software and
   18  * its documentation for any purpose and without fee is hereby granted,
   19  * provided that the above copyright notice appears in all copies and
   20  * that both the copyright notice and this permission notice appear in
   21  * supporting documentation, and that the name of OSF or Open Software
   22  * Foundation not be used in advertising or publicity pertaining to
   23  * distribution of the software without specific, written prior
   24  * permission.
   25  *
   26  *   OSF DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE
   27  * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS,
   28  * IN NO EVENT SHALL OSF BE LIABLE FOR ANY SPECIAL, INDIRECT, OR
   29  * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
   30  * LOSS OF USE, DATA OR PROFITS, WHETHER IN ACTION OF CONTRACT,
   31  * NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
   32  * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
   33  */
   34 
   35 /*
   36  * Largely written by Julian Elischer (julian@tfs.com)
   37  * for TRW Financial Systems.
   38  *
   39  * TRW Financial Systems, in accordance with their agreement with Carnegie
   40  * Mellon University, makes this software available to CMU to distribute
   41  * or use in any manner that they see fit as long as this message is kept with
   42  * the software. For this reason TFS also grants any other persons or
   43  * organisations permission to use or modify this software.
   44  *
   45  * TFS supplies this software to be publicly redistributed
   46  * on the understanding that TFS is not responsible for the correct
   47  * functioning of this software in any circumstances.
   48  *
   49  * Ported to run under 386BSD by Julian Elischer (julian@tfs.com) Sept 1992
   50  */
   51 
   52 #ifndef _DEV_SCSIPI_SCSIPI_DISK_H_
   53 #define _DEV_SCSIPI_SCSIPI_DISK_H_
   54 
   55 /*
   56  * SCSI command format
   57  */
   58 
   59 #define READ_10                 0x28
   60 #define WRITE_10                0x2a
   61 struct scsipi_rw_10 {
   62         u_int8_t opcode;
   63         u_int8_t byte2;
   64 #define SRWB_RELADDR    0x01    /* obsolete */
   65 #define SRWB_FUA_NV     0x02    /* force unit access non-volatile cache */
   66 #define SRWB_FUA        0x08    /* force unit access */
   67 #define SRWB_DPO        0x10    /* disable page out */
   68 #define SRWB_PROTECT(x) ((x) << 5)
   69         u_int8_t addr[4];
   70         u_int8_t reserved;
   71         u_int8_t length[2];
   72         u_int8_t control;
   73 } __attribute__((packed));
   74 
   75 #define READ_12                 0xa8
   76 #define WRITE_12                0xaa
   77 struct scsipi_rw_12 {
   78         u_int8_t opcode;
   79         u_int8_t byte2;         /* see scsipi_rw_big bits */
   80         u_int8_t addr[4];
   81         u_int8_t length[4];
   82         u_int8_t byte11;
   83         u_int8_t control;
   84 };
   85 
   86 #define READ_16                 0x88
   87 #define WRITE_16                0x8a
   88 struct scsipi_rw_16 {
   89         u_int8_t opcode;
   90         u_int8_t byte2;         /* see scsipi_rw_big bits */
   91         u_int8_t addr[8];
   92         u_int8_t length[4];
   93         u_int8_t byte15;
   94         u_int8_t control;
   95 };
   96 
   97 #define READ_CAPACITY_10        0x25
   98 struct scsipi_read_capacity_10 {
   99         u_int8_t opcode;
  100         u_int8_t byte2;
  101         u_int8_t addr[4];
  102         u_int8_t unused[3];
  103         u_int8_t control;
  104 } __attribute__((packed));
  105 
  106 /* DATAs definitions for the above commands */
  107 
  108 struct scsipi_read_capacity_10_data {
  109         u_int8_t addr[4];
  110         u_int8_t length[4];
  111 } __attribute__((packed));
  112 
  113 #define READ_CAPACITY_16        0x9e    /* really SERVICE ACTION IN */
  114 struct scsipi_read_capacity_16 {
  115         u_int8_t opcode;
  116         u_int8_t byte2;
  117 #define SRC16_SERVICE_ACTION    0x10
  118         u_int8_t addr[8];
  119         u_int8_t len[4];
  120         u_int8_t byte15;
  121 #define SRC16_PMI               0x01
  122         u_int8_t control;
  123 };
  124 
  125 struct scsipi_read_capacity_16_data {
  126         u_int8_t addr[8];
  127         u_int8_t length[4];
  128         u_int8_t byte13;
  129 #define SRC16D_PROT_EN          0x01
  130 #define SRC16D_RTO_EN           0x02
  131         u_int8_t reserved[19];
  132 };
  133 
  134 /* XXX SBC-2 says this is vendor-specific */
  135 #define READ_FORMAT_CAPACITIES  0x23
  136 struct scsipi_read_format_capacities {
  137         u_int8_t opcode;
  138         u_int8_t byte2;
  139         u_int8_t reserved1[5];
  140         u_int8_t length[2];
  141         u_int8_t reserved2[3];
  142 } __attribute__((packed));
  143 
  144 struct scsipi_capacity_list_header {
  145         u_int8_t reserved[3];
  146         u_int8_t length;
  147 } __attribute__((packed));
  148 
  149 struct scsipi_capacity_descriptor {
  150         u_int8_t nblks[4];
  151         u_int8_t byte5;
  152         u_int8_t blklen[3];
  153 } __attribute__((packed));
  154 
  155 /* codes only valid in the current/maximum capacity descriptor */
  156 #define SCSIPI_CAP_DESC_CODE_MASK               0x3
  157 #define SCSIPI_CAP_DESC_CODE_RESERVED           0x0
  158 #define SCSIPI_CAP_DESC_CODE_UNFORMATTED        0x1
  159 #define SCSIPI_CAP_DESC_CODE_FORMATTED          0x2
  160 #define SCSIPI_CAP_DESC_CODE_NONE               0x3
  161 
  162 #endif /* _DEV_SCSIPI_SCSIPI_DISK_H_ */

Cache object: 8ee9279b5df604028ad7243a8a20ce6e


[ 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.