mirror of
https://github.com/systemd/systemd.git
synced 2024-11-05 15:21:37 +03:00
97 lines
2.5 KiB
C
97 lines
2.5 KiB
C
|
/*
|
||
|
* scsi.h
|
||
|
*
|
||
|
* General scsi and linux scsi specific defines and structs.
|
||
|
*
|
||
|
* Copyright (C) IBM Corp. 2003
|
||
|
*
|
||
|
* This library is free software; you can redistribute it and/or modify
|
||
|
* it under the terms of the GNU Lesser General Public License as
|
||
|
* published by the Free Software Foundation; either version 2.1 of the
|
||
|
* License, or (at your option) any later version.
|
||
|
*
|
||
|
* This library is distributed in the hope that it will be useful, but
|
||
|
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||
|
* Lesser General Public License for more details.
|
||
|
*
|
||
|
* You should have received a copy of the GNU Lesser General Public
|
||
|
* License along with this library; if not, write to the Free Software
|
||
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
|
||
|
* USA
|
||
|
*/
|
||
|
|
||
|
#include <scsi/scsi.h>
|
||
|
|
||
|
struct scsi_ioctl_command {
|
||
|
unsigned int inlen; /* excluding scsi command length */
|
||
|
unsigned int outlen;
|
||
|
unsigned char data[1];
|
||
|
/* on input, scsi command starts here then opt. data */
|
||
|
};
|
||
|
|
||
|
/*
|
||
|
* Default 5 second timeout
|
||
|
*/
|
||
|
#define DEF_TIMEOUT 5000
|
||
|
|
||
|
#define SENSE_BUFF_LEN 32
|
||
|
|
||
|
/*
|
||
|
* SCSI INQUIRY vendor and model (really product) lengths.
|
||
|
*/
|
||
|
#define VENDOR_LENGTH 8
|
||
|
#define MODEL_LENGTH 16
|
||
|
|
||
|
#define INQUIRY_CMD 0x12
|
||
|
#define INQUIRY_CMDLEN 6
|
||
|
|
||
|
/*
|
||
|
* INQUIRY VPD page 0x83 identifier descriptor related values. Reference the
|
||
|
* SCSI Primary Commands specification for details.
|
||
|
*/
|
||
|
|
||
|
/*
|
||
|
* id type values of id descriptors. These are assumed to fit in 4 bits.
|
||
|
*/
|
||
|
#define SCSI_ID_VENDOR_SPECIFIC 0
|
||
|
#define SCSI_ID_T10_VENDOR 1
|
||
|
#define SCSI_ID_EUI_64 2
|
||
|
#define SCSI_ID_NAA 3
|
||
|
|
||
|
/*
|
||
|
* Supported NAA values. These fit in 4 bits, so the "don't care" value
|
||
|
* cannot conflict with real values.
|
||
|
*/
|
||
|
#define SCSI_ID_NAA_DONT_CARE 0xff
|
||
|
#define SCSI_ID_NAA_IEEE_REG 5
|
||
|
#define SCSI_ID_NAA_IEEE_REG_EXTENDED 6
|
||
|
|
||
|
/*
|
||
|
* Supported Code Set values.
|
||
|
*/
|
||
|
#define SCSI_ID_BINARY 1
|
||
|
#define SCSI_ID_ASCII 2
|
||
|
|
||
|
struct scsi_id_search_values {
|
||
|
u_char id_type;
|
||
|
u_char naa_type;
|
||
|
u_char code_set;
|
||
|
};
|
||
|
|
||
|
/*
|
||
|
* Following are the "true" SCSI status codes. Linux has traditionally
|
||
|
* used a 1 bit right and masked version of these. So now CHECK_CONDITION
|
||
|
* and friends (in <scsi/scsi.h>) are deprecated.
|
||
|
*/
|
||
|
#define SCSI_CHECK_CONDITION 0x2
|
||
|
#define SCSI_CONDITION_MET 0x4
|
||
|
#define SCSI_BUSY 0x8
|
||
|
#define SCSI_IMMEDIATE 0x10
|
||
|
#define SCSI_IMMEDIATE_CONDITION_MET 0x14
|
||
|
#define SCSI_RESERVATION_CONFLICT 0x18
|
||
|
#define SCSI_COMMAND_TERMINATED 0x22
|
||
|
#define SCSI_TASK_SET_FULL 0x28
|
||
|
#define SCSI_ACA_ACTIVE 0x30
|
||
|
#define SCSI_TASK_ABORTED 0x40
|