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/ciss/cissio.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) 2001 Michael Smith
    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  * 2. Redistributions in binary form must reproduce the above copyright
   11  *    notice, this list of conditions and the following disclaimer in the
   12  *    documentation and/or other materials provided with the distribution.
   13  *
   14  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
   15  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
   16  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
   17  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
   18  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
   19  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
   20  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
   21  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
   22  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
   23  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   24  * SUCH DAMAGE.
   25  *
   26  *      $FreeBSD: releng/8.3/sys/dev/ciss/cissio.h 180454 2008-07-11 21:20:51Z scottl $
   27  */
   28 
   29 /*
   30  * Driver ioctl interface.
   31  *
   32  * Note that this interface is API-compatible with the Linux implementation
   33  * except as noted, and thus this header bears a striking resemblance to 
   34  * the Linux driver's cciss_ioctl.h.
   35  *
   36  */
   37 
   38 #include <sys/ioccom.h>
   39 
   40 #pragma pack(1)
   41 
   42 typedef struct
   43 {
   44     u_int8_t    bus;
   45     u_int8_t    dev_fn;
   46     u_int32_t   board_id;
   47 } cciss_pci_info_struct; 
   48 
   49 typedef struct
   50 {
   51     u_int32_t   delay;
   52     u_int32_t   count;
   53 } cciss_coalint_struct;
   54 
   55 typedef char            NodeName_type[16];
   56 typedef u_int32_t       Heartbeat_type;
   57 
   58 #define CISS_PARSCSIU2  0x0001
   59 #define CISS_PARCSCIU3  0x0002
   60 #define CISS_FIBRE1G    0x0100
   61 #define CISS_FIBRE2G    0x0200
   62 typedef u_int32_t       BusTypes_type;
   63 
   64 typedef char            FirmwareVer_type[4];
   65 typedef u_int32_t       DriverVer_type;
   66 
   67 /* passthrough command definitions */
   68 #define SENSEINFOBYTES          32
   69 #define CISS_MAX_LUN            16      
   70 #define LEVEL2LUN               1
   71 #define LEVEL3LUN               0
   72 
   73 /* command status value */
   74 #define CMD_SUCCESS             0x0000
   75 #define CMD_TARGET_STATUS       0x0001
   76 #define CMD_DATA_UNDERRUN       0x0002
   77 #define CMD_DATA_OVERRUN        0x0003
   78 #define CMD_INVALID             0x0004
   79 #define CMD_PROTOCOL_ERR        0x0005
   80 #define CMD_HARDWARE_ERR        0x0006
   81 #define CMD_CONNECTION_LOST     0x0007
   82 #define CMD_ABORTED             0x0008
   83 #define CMD_ABORT_FAILED        0x0009
   84 #define CMD_UNSOLICITED_ABORT   0x000A
   85 #define CMD_TIMEOUT             0x000B
   86 #define CMD_UNABORTABLE         0x000C
   87 
   88 /* transfer direction */
   89 #define XFER_NONE               0x00
   90 #define XFER_WRITE              0x01
   91 #define XFER_READ               0x02
   92 #define XFER_RSVD               0x03
   93 
   94 /* task attribute */
   95 #define ATTR_UNTAGGED           0x00
   96 #define ATTR_SIMPLE             0x04
   97 #define ATTR_HEADOFQUEUE        0x05
   98 #define ATTR_ORDERED            0x06
   99 #define ATTR_ACA                0x07
  100 
  101 /* CDB type */
  102 #define TYPE_CMD                0x00
  103 #define TYPE_MSG                0x01
  104 
  105 /* command list structure */
  106 typedef union {
  107     struct {
  108         u_int8_t        Dev;
  109         u_int8_t        Bus:6;
  110         u_int8_t        Mode:2;
  111     } __packed PeripDev;
  112     struct {
  113         u_int8_t        DevLSB;
  114         u_int8_t        DevMSB:6;
  115         u_int8_t        Mode:2;
  116     } __packed LogDev;
  117     struct {
  118         u_int8_t        Dev:5;
  119         u_int8_t        Bus:3;
  120         u_int8_t        Targ:6;
  121         u_int8_t        Mode:2;
  122     } __packed LogUnit;
  123 } SCSI3Addr_struct;
  124 
  125 typedef struct {
  126     u_int32_t           TargetId:24;
  127     u_int32_t           Bus:6;
  128     u_int32_t           Mode:2;
  129     SCSI3Addr_struct    Target[2];
  130 } __packed PhysDevAddr_struct;
  131   
  132 typedef struct {
  133     u_int32_t           VolId:30;
  134     u_int32_t           Mode:2;
  135     u_int8_t            reserved[4];
  136 } __packed LogDevAddr_struct;
  137 
  138 typedef union {
  139     u_int8_t            LunAddrBytes[8];
  140     SCSI3Addr_struct    SCSI3Lun[4];
  141     PhysDevAddr_struct  PhysDev;
  142     LogDevAddr_struct   LogDev;
  143 } __packed LUNAddr_struct;
  144 
  145 typedef struct {
  146     u_int8_t    CDBLen;
  147     struct {
  148         u_int8_t        Type:3;
  149         u_int8_t        Attribute:3;
  150         u_int8_t        Direction:2;
  151     } __packed Type;
  152     u_int16_t   Timeout;
  153     u_int8_t    CDB[16];
  154 } __packed RequestBlock_struct;
  155 
  156 typedef union {
  157     struct {
  158         u_int8_t        Reserved[3];
  159         u_int8_t        Type;
  160         u_int32_t       ErrorInfo;
  161     } __packed Common_Info;
  162     struct {
  163         u_int8_t        Reserved[2];
  164         u_int8_t        offense_size;
  165         u_int8_t        offense_num;
  166         u_int32_t       offense_value;
  167     } __packed Invalid_Cmd;
  168 } __packed MoreErrInfo_struct;
  169 
  170 typedef struct {
  171     u_int8_t            ScsiStatus;
  172     u_int8_t            SenseLen;
  173     u_int16_t           CommandStatus;
  174     u_int32_t           ResidualCnt;
  175     MoreErrInfo_struct  MoreErrInfo;
  176     u_int8_t            SenseInfo[SENSEINFOBYTES];
  177 } __packed ErrorInfo_struct;
  178 
  179 typedef struct {
  180     LUNAddr_struct      LUN_info;       /* 8 */
  181     RequestBlock_struct Request;        /* 20 */
  182     ErrorInfo_struct    error_info;     /* 48 */
  183     u_int16_t           buf_size;       /* 2 */
  184     u_int8_t            *buf;           /* 4 */
  185 } __packed IOCTL_Command_struct;
  186 
  187 #ifdef __amd64__
  188 typedef struct {
  189     LUNAddr_struct      LUN_info;       /* 8 */
  190     RequestBlock_struct Request;        /* 20 */
  191     ErrorInfo_struct    error_info;     /* 48 */
  192     u_int16_t           buf_size;       /* 2 */
  193     u_int32_t           buf;            /* 4 */
  194 } __packed IOCTL_Command_struct32;
  195 #endif
  196 
  197 /************************************************************************
  198  * Command queue statistics
  199  */
  200 
  201 #define CISSQ_FREE      0
  202 #define CISSQ_NOTIFY    1
  203 #define CISSQ_COUNT     2
  204 
  205 struct ciss_qstat {
  206     uint32_t            q_length;
  207     uint32_t            q_max;
  208 };
  209 
  210 union ciss_statrequest {
  211     uint32_t            cs_item;
  212     struct ciss_qstat   cs_qstat;
  213 };
  214 
  215 /*
  216  * Note that we'd normally pass the struct in directly, but
  217  * this code is trying to be compatible with other drivers.
  218  */
  219 #define CCISS_GETPCIINFO        _IOR ('C', 200, cciss_pci_info_struct)
  220 #define CCISS_GETINTINFO        _IOR ('C', 201, cciss_coalint_struct)
  221 #define CCISS_SETINTINFO        _IOW ('C', 202, cciss_coalint_struct)
  222 #define CCISS_GETNODENAME       _IOR ('C', 203, NodeName_type)
  223 #define CCISS_SETNODENAME       _IOW ('C', 204, NodeName_type)
  224 #define CCISS_GETHEARTBEAT      _IOR ('C', 205, Heartbeat_type)
  225 #define CCISS_GETBUSTYPES       _IOR ('C', 206, BusTypes_type)
  226 #define CCISS_GETFIRMVER        _IOR ('C', 207, FirmwareVer_type)
  227 #define CCISS_GETDRIVERVER      _IOR ('C', 208, DriverVer_type)
  228 #define CCISS_REVALIDVOLS       _IO  ('C', 209)
  229 #define CCISS_PASSTHRU          _IOWR ('C', 210, IOCTL_Command_struct)
  230 #ifdef __amd64
  231 #define CCISS_PASSTHRU32        _IOWR ('C', 210, IOCTL_Command_struct32)
  232 #endif
  233 #define CCISS_GETQSTATS         _IOWR ('C', 211, union ciss_statrequest)
  234 
  235 #pragma pack()

Cache object: 7b998ff2b5706add3875aa235af20612


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