smartmontools SVN Rev 5613
Utility to control and monitor storage systems with "S.M.A.R.T."
Classes | Macros | Functions | Variables
scsicmds.h File Reference
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include <string.h>
Include dependency graph for scsicmds.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.


struct  scsi_cmnd_io
struct  scsi_sense_disect
struct  scsi_iec_mode_page
struct  scsiErrorCounter
struct  scsiNonMediumError
struct  scsi_readcap_resp
struct  scsi_supp_log_pages
class  supported_vpd_pages


#define SCSICMDS_H_CVSID   "$Id: scsicmds.h 5462 2023-03-13 10:45:06Z chrfranke $\n"
#define TEST_UNIT_READY   0x0
#define LOG_SELECT   0x4c
#define LOG_SENSE   0x4d
#define MODE_SENSE_6   0x1a
#define MODE_SENSE_10   0x5a
#define MODE_SELECT_6   0x15
#define MODE_SELECT_10   0x55
#define INQUIRY   0x12
#define REQUEST_SENSE   0x03
#define SEND_DIAGNOSTIC   0x1d
#define READ_DEFECT_10   0x37
#define READ_DEFECT_12   0xb7
#define START_STOP_UNIT   0x1b
#define REPORT_LUNS   0xa0
#define READ_CAPACITY_10   0x25
#define SERVICE_ACTION_IN_16   0x9e
#define SAI_READ_CAPACITY_16   0x10
#define SAI_GET_PHY_ELEM_STATUS   0x17
#define MAINTENANCE_IN_12   0xa3
#define MI_REP_SUP_OPCODES   0xc /* maintenance in (12) */
#define SAT_ATA_PASSTHROUGH_12   0xa1
#define SAT_ATA_PASSTHROUGH_16   0x85
#define DXFER_NONE   0
#define DXFER_TO_DEVICE   2
#define SCSI_IECMP_RAW_LEN   64
#define SCSI_PT_WO   0x4 /* write once device */
#define SCSI_PT_CDROM   0x5
#define SCSI_PT_OPTICAL   0x7
#define SCSI_PT_ENCLOSURE   0xd
#define SCSI_PT_RBC   0xe
#define SCSI_PT_HOST_MANAGED   0x14 /* Zoned disk */
#define SCSI_TPROTO_FCP   0
#define SCSI_TPROTO_SPI   1
#define SCSI_TPROTO_SSA   2
#define SCSI_TPROTO_1394   3
#define SCSI_TPROTO_SRP   4 /* SCSI over RDMA */
#define SCSI_TPROTO_SAS   6
#define SCSI_TPROTO_ADT   7
#define SCSI_TPROTO_ATA   8
#define SCSI_TPROTO_UAS   9 /* USB attached SCSI */
#define SCSI_TPROTO_SOP   0xa /* SCSI over PCIe */
#define SCSI_TPROTO_PCIE   0xb /* includes NVMe */
#define SCSI_TPROTO_NONE   0xf
#define SUPPORTED_LPAGES   0x00
#define FORMAT_STATUS_LPAGE   0x08
#define LAST_N_DEFERRED_LPAGE   0x0b /* or async events */
#define LB_PROV_LPAGE   0x0c /* SBC-3 */
#define TEMPERATURE_LPAGE   0x0d
#define SS_MEDIA_LPAGE   0x11 /* SBC-3 */
#define DEVICE_STATS_LPAGE   0x14 /* SSC-5 */
#define BACKGROUND_RESULTS_LPAGE   0x15 /* SBC-3 */
#define ATA_PT_RESULTS_LPAGE   0x16 /* SAT */
#define NONVOL_CACHE_LPAGE   0x17 /* SBC-3 */
#define GEN_STATS_PERF_LPAGE   0x19
#define IE_LPAGE   0x2f
#define NO_SUBPAGE_L_SPAGE   0x0 /* 0x0-0x3f,0x0 */
#define LAST_N_INQ_DAT_L_SPAGE   0x1 /* 0xb,0x1 */
#define LAST_N_MODE_PG_L_SPAGE   0x2 /* 0xb,0x2 */
#define ENVIRO_REP_L_SPAGE   0x1 /* 0xd,0x1 */
#define ENVIRO_LIMITS_L_SPAGE   0x2 /* 0xd,0x2 */
#define UTILIZATION_L_SPAGE   0x1 /* 0xe,0x1 */
#define ZB_DEV_STATS_L_SPAGE   0x1 /* 0x14,0x1 */
#define PEND_DEFECTS_L_SPAGE   0x1 /* 0x15,0x1 */
#define BACKGROUND_OP_L_SPAGE   0x2 /* 0x15,0x2 */
#define LPS_MISALIGN_L_SPAGE   0x3 /* 0x15,0x3 */
#define SUPP_SPAGE_L_SPAGE   0xff /* 0x0,0xff pages+subpages */
#define SEAGATE_CACHE_LPAGE   0x37
#define SEAGATE_FARM_LPAGE   0x3d
#define SEAGATE_FARM_CURRENT_L_SPAGE   0x3 /* 0x3d,0x3 */
#define LOG_RESP_SELF_TEST_LEN   0x194
#define TAPE_ALERTS_LPAGE   0x2e
#define VENDOR_UNIQUE_PAGE   0x00
#define FORMAT_DEVICE_PAGE   0x03
#define FLEXIBLE_DISK_PAGE   0x05
#define CACHING_PAGE   0x08
#define XOR_CONTROL_MODE_PAGE   0x10
#define CONTROL_MODE_PAGE   0x0a
#define NOTCH_PAGE   0x0c
#define CD_DEVICE_PAGE   0x0d
#define CD_AUDIO_CONTROL_PAGE   0x0e
#define ALL_MODE_PAGES   0x3f
#define SCSI_VPD_BLOCK_LIMITS   0xb0
#define SCSI_SK_NO_SENSE   0x0
#define SCSI_SK_NOT_READY   0x2
#define SCSI_SK_MEDIUM_ERROR   0x3
#define SCSI_SK_DATA_PROTECT   0x7
#define SCSI_SK_MISCOMPARE   0xe
#define SCSI_SK_COMPLETED   0xf
#define SCSI_ASC_NOT_READY   0x4 /* more info in ASCQ code */
#define SCSI_ASC_NO_MEDIUM   0x3a /* more info in ASCQ code */
#define SCSI_ASC_WARNING   0xb
#define SIMPLE_NO_ERROR   0
#define SIMPLE_ERR_BAD_FIELD   3 /* in cbd */
#define SIMPLE_ERR_BAD_PARAM   4 /* in data */
#define SIMPLE_ERR_BAD_RESP   5 /* response fails sanity */
#define SIMPLE_ERR_NO_MEDIUM   6 /* no medium present */
#define SIMPLE_ERR_BECOMING_READY   7 /* device will be ready soon */
#define SIMPLE_ERR_TRY_AGAIN   8 /* some warning, try again */
#define SIMPLE_ERR_MEDIUM_HARDWARE   9 /* medium or hardware error */
#define SIMPLE_ERR_UNKNOWN   10 /* unknown sense value */
#define SIMPLE_ERR_ABORTED_COMMAND   11 /* probably transport error */
#define SIMPLE_ERR_PROTECTION   12 /* data protect sense key */
#define SIMPLE_ERR_MISCOMPARE   13 /* from VERIFY commands */
#define SCSI_DIAG_NO_SELF_TEST   0x00
#define SCSI_DIAG_DEF_SELF_TEST   0xff
#define SCSI_POW_COND_ACTIVE   0x1
#define SCSI_POW_COND_IDLE   0x2
#define SCSI_TIMEOUT_SELF_TEST   (5 * 60 * 60) /* allow max 5 hours for */


bool is_scsi_cdb (const uint8_t *cdbp, int clen)
void scsi_do_sense_disect (const struct scsi_cmnd_io *in, struct scsi_sense_disect *out)
int scsiSimpleSenseFilter (const struct scsi_sense_disect *sinfo)
const char * scsiErrString (int scsiErr)
char * scsi_get_sense_key_str (int sense_key, int buff_len, char *buff)
int scsi_vpd_dev_id_iter (const unsigned char *initial_desig_desc, int page_len, int *off, int m_assoc, int m_desig_type, int m_code_set)
int scsi_decode_lu_dev_id (const unsigned char *b, int blen, char *s, int slen, int *transport)
int scsiTestUnitReady (scsi_device *device)
int scsiStdInquiry (scsi_device *device, uint8_t *pBuf, int bufLen)
int scsiInquiryVpd (scsi_device *device, int vpd_page, uint8_t *pBuf, int bufLen)
int scsiLogSense (scsi_device *device, int pagenum, int subpagenum, uint8_t *pBuf, int bufLen, int known_resp_len)
int scsiLogSelect (scsi_device *device, int pcr, int sp, int pc, int pagenum, int subpagenum, uint8_t *pBuf, int bufLen)
int scsiModeSense (scsi_device *device, int pagenum, int subpagenum, int pc, uint8_t *pBuf, int bufLen)
int scsiModeSelect (scsi_device *device, int sp, uint8_t *pBuf, int bufLen)
int scsiModeSense10 (scsi_device *device, int pagenum, int subpagenum, int pc, uint8_t *pBuf, int bufLen)
int scsiModeSelect10 (scsi_device *device, int sp, uint8_t *pBuf, int bufLen)
int scsiModePageOffset (const uint8_t *resp, int len, int modese_len)
int scsiRequestSense (scsi_device *device, struct scsi_sense_disect *sense_info)
int scsiSetPowerCondition (scsi_device *device, int power_cond, int pcond_modifier=0)
int scsiSendDiagnostic (scsi_device *device, int functioncode, uint8_t *pBuf, int bufLen)
bool scsi_pass_through_yield_sense (scsi_device *device, scsi_cmnd_io *iop, struct scsi_sense_disect &sinfo)
int scsiReadDefect10 (scsi_device *device, int req_plist, int req_glist, int dl_format, uint8_t *pBuf, int bufLen)
int scsiReadDefect12 (scsi_device *device, int req_plist, int req_glist, int dl_format, int addrDescIndex, uint8_t *pBuf, int bufLen)
int scsiReadCapacity10 (scsi_device *device, unsigned int *last_lbp, unsigned int *lb_sizep)
int scsiReadCapacity16 (scsi_device *device, uint8_t *pBuf, int bufLen)
int scsiRSOCcmd (scsi_device *device, bool rctd, uint8_t rep_opt, uint8_t opcode, uint16_t serv_act, uint8_t *pBuf, int bufLen, int &rspLen)
int scsiCheckIE (scsi_device *device, int hasIELogPage, int hasTempLogPage, uint8_t *asc, uint8_t *ascq, uint8_t *currenttemp, uint8_t *triptemp)
int scsiFetchIECmpage (scsi_device *device, struct scsi_iec_mode_page *iecp, int modese_len)
int scsi_IsExceptionControlEnabled (const struct scsi_iec_mode_page *iecp)
int scsi_IsWarningEnabled (const struct scsi_iec_mode_page *iecp)
int scsiSetExceptionControlAndWarning (scsi_device *device, int enabled, const struct scsi_iec_mode_page *iecp)
void scsiDecodeErrCounterPage (unsigned char *resp, struct scsiErrorCounter *ecp, int allocLen)
void scsiDecodeNonMediumErrPage (unsigned char *resp, struct scsiNonMediumError *nmep, int allocLen)
int scsiFetchExtendedSelfTestTime (scsi_device *device, int *durationSec, int modese_len)
int scsiCountFailedSelfTests (scsi_device *device, int noisy)
int scsiSelfTestInProgress (scsi_device *device, int *inProgress)
int scsiFetchControlGLTSD (scsi_device *device, int modese_len, int current)
int scsiSetControlGLTSD (scsi_device *device, int enabled, int modese_len)
int scsiFetchTransportProtocol (scsi_device *device, int modese_len)
int scsiGetRPM (scsi_device *device, int modese_len, int *form_factorp, int *haw_zbcp)
int scsiGetSetCache (scsi_device *device, int modese_len, short int *wce, short int *rcd)
uint64_t scsiGetSize (scsi_device *device, bool avoid_rcap16, struct scsi_readcap_resp *srrp)
char * scsiGetIEString (uint8_t asc, uint8_t ascq, char *b, int blen)
int scsiGetTemp (scsi_device *device, uint8_t *currenttemp, uint8_t *triptemp)
int scsiSmartDefaultSelfTest (scsi_device *device)
int scsiSmartShortSelfTest (scsi_device *device)
int scsiSmartExtendSelfTest (scsi_device *device)
int scsiSmartShortCapSelfTest (scsi_device *device)
int scsiSmartExtendCapSelfTest (scsi_device *device)
int scsiSmartSelfTestAbort (scsi_device *device)
const char * scsiTapeAlertsTapeDevice (unsigned short code)
const char * scsiTapeAlertsChangerDevice (unsigned short code)
const char * scsi_get_opcode_name (const uint8_t *cdbp)
void scsi_format_id_string (char *out, const uint8_t *in, int n)
void dStrHex (const uint8_t *up, int len, int no_ascii)
void dStrHexFp (const uint8_t *up, int len, int no_ascii, FILE *fp)
const unsigned char * sg_scsi_sense_desc_find (const unsigned char *sensep, int sense_len, int desc_type)


unsigned char scsi_debugmode

Macro Definition Documentation


#define ALL_MODE_PAGES   0x3f

Definition at line 298 of file scsicmds.h.



Definition at line 231 of file scsicmds.h.


#define ATA_PT_RESULTS_LPAGE   0x16 /* SAT */

Definition at line 236 of file scsicmds.h.



Definition at line 296 of file scsicmds.h.


#define BACKGROUND_OP_L_SPAGE   0x2 /* 0x15,0x2 */

Definition at line 252 of file scsicmds.h.


#define BACKGROUND_RESULTS_LPAGE   0x15 /* SBC-3 */

Definition at line 235 of file scsicmds.h.



Definition at line 219 of file scsicmds.h.


#define CACHING_PAGE   0x08

Definition at line 279 of file scsicmds.h.


#define CD_AUDIO_CONTROL_PAGE   0x0e

Definition at line 286 of file scsicmds.h.


#define CD_DEVICE_PAGE   0x0d

Definition at line 285 of file scsicmds.h.


#define CONTROL_MODE_PAGE   0x0a

Definition at line 282 of file scsicmds.h.



Definition at line 287 of file scsicmds.h.


#define DEVICE_STATS_LPAGE   0x14 /* SSC-5 */

Definition at line 234 of file scsicmds.h.



Definition at line 274 of file scsicmds.h.



Definition at line 109 of file scsicmds.h.


#define DXFER_NONE   0

Definition at line 108 of file scsicmds.h.


#define DXFER_TO_DEVICE   2

Definition at line 110 of file scsicmds.h.



Definition at line 288 of file scsicmds.h.


#define ENVIRO_LIMITS_L_SPAGE   0x2 /* 0xd,0x2 */

Definition at line 248 of file scsicmds.h.


#define ENVIRO_REP_L_SPAGE   0x1 /* 0xd,0x1 */

Definition at line 247 of file scsicmds.h.



Definition at line 293 of file scsicmds.h.


#define FLEXIBLE_DISK_PAGE   0x05

Definition at line 277 of file scsicmds.h.


#define FORMAT_DEVICE_PAGE   0x03

Definition at line 275 of file scsicmds.h.


#define FORMAT_STATUS_LPAGE   0x08

Definition at line 226 of file scsicmds.h.


#define GEN_STATS_PERF_LPAGE   0x19

Definition at line 239 of file scsicmds.h.


#define IE_LPAGE   0x2f

Definition at line 241 of file scsicmds.h.



Definition at line 292 of file scsicmds.h.


#define INQUIRY   0x12

Definition at line 55 of file scsicmds.h.


#define LAST_N_DEFERRED_LPAGE   0x0b /* or async events */

Definition at line 227 of file scsicmds.h.



Definition at line 225 of file scsicmds.h.


#define LAST_N_INQ_DAT_L_SPAGE   0x1 /* 0xb,0x1 */

Definition at line 245 of file scsicmds.h.


#define LAST_N_MODE_PG_L_SPAGE   0x2 /* 0xb,0x2 */

Definition at line 246 of file scsicmds.h.


#define LB_PROV_LPAGE   0x0c /* SBC-3 */

Definition at line 228 of file scsicmds.h.


#define LOG_RESP_SELF_TEST_LEN   0x194

Definition at line 265 of file scsicmds.h.


#define LOG_SELECT   0x4c

Definition at line 37 of file scsicmds.h.


#define LOG_SENSE   0x4d

Definition at line 40 of file scsicmds.h.



Definition at line 385 of file scsicmds.h.


#define LPS_MISALIGN_L_SPAGE   0x3 /* 0x15,0x3 */

Definition at line 253 of file scsicmds.h.


#define MAINTENANCE_IN_12   0xa3

Definition at line 94 of file scsicmds.h.



Definition at line 283 of file scsicmds.h.


#define MI_REP_SUP_OPCODES   0xc /* maintenance in (12) */

Definition at line 97 of file scsicmds.h.


#define MODE_SELECT_10   0x55

Definition at line 52 of file scsicmds.h.


#define MODE_SELECT_6   0x15

Definition at line 49 of file scsicmds.h.


#define MODE_SENSE_10   0x5a

Definition at line 46 of file scsicmds.h.


#define MODE_SENSE_6   0x1a

Definition at line 43 of file scsicmds.h.



Definition at line 302 of file scsicmds.h.



Definition at line 301 of file scsicmds.h.



Definition at line 303 of file scsicmds.h.



Definition at line 304 of file scsicmds.h.


#define NO_SUBPAGE_L_SPAGE   0x0 /* 0x0-0x3f,0x0 */

Definition at line 244 of file scsicmds.h.



Definition at line 224 of file scsicmds.h.


#define NONVOL_CACHE_LPAGE   0x17 /* SBC-3 */

Definition at line 237 of file scsicmds.h.


#define NOTCH_PAGE   0x0c

Definition at line 284 of file scsicmds.h.


#define PEND_DEFECTS_L_SPAGE   0x1 /* 0x15,0x1 */

Definition at line 251 of file scsicmds.h.



Definition at line 280 of file scsicmds.h.



Definition at line 240 of file scsicmds.h.



Definition at line 291 of file scsicmds.h.



Definition at line 238 of file scsicmds.h.



Definition at line 289 of file scsicmds.h.



Definition at line 290 of file scsicmds.h.


#define READ_CAPACITY_10   0x25

Definition at line 79 of file scsicmds.h.


#define READ_DEFECT_10   0x37

Definition at line 67 of file scsicmds.h.


#define READ_DEFECT_12   0xb7

Definition at line 70 of file scsicmds.h.



Definition at line 221 of file scsicmds.h.



Definition at line 222 of file scsicmds.h.



Definition at line 273 of file scsicmds.h.



Definition at line 61 of file scsicmds.h.


#define REPORT_LUNS   0xa0

Definition at line 76 of file scsicmds.h.


#define REQUEST_SENSE   0x03

Definition at line 58 of file scsicmds.h.



Definition at line 276 of file scsicmds.h.


#define SAI_GET_PHY_ELEM_STATUS   0x17

Definition at line 88 of file scsicmds.h.


#define SAI_READ_CAPACITY_16   0x10

Definition at line 85 of file scsicmds.h.



Definition at line 91 of file scsicmds.h.


#define SAT_ATA_PASSTHROUGH_12   0xa1

Definition at line 101 of file scsicmds.h.


#define SAT_ATA_PASSTHROUGH_16   0x85

Definition at line 104 of file scsicmds.h.



Definition at line 342 of file scsicmds.h.



Definition at line 339 of file scsicmds.h.


#define SCSI_ASC_NO_MEDIUM   0x3a /* more info in ASCQ code */

Definition at line 337 of file scsicmds.h.


#define SCSI_ASC_NOT_READY   0x4 /* more info in ASCQ code */

Definition at line 336 of file scsicmds.h.



Definition at line 338 of file scsicmds.h.



Definition at line 340 of file scsicmds.h.


#define SCSI_ASC_WARNING   0xb

Definition at line 341 of file scsicmds.h.



Definition at line 344 of file scsicmds.h.



Definition at line 370 of file scsicmds.h.



Definition at line 367 of file scsicmds.h.



Definition at line 366 of file scsicmds.h.


#define SCSI_DIAG_DEF_SELF_TEST   0xff

Definition at line 365 of file scsicmds.h.



Definition at line 369 of file scsicmds.h.



Definition at line 368 of file scsicmds.h.


#define SCSI_DIAG_NO_SELF_TEST   0x00

Definition at line 364 of file scsicmds.h.


#define SCSI_IECMP_RAW_LEN   64

Definition at line 143 of file scsicmds.h.


#define SCSI_POW_COND_ACTIVE   0x1

Definition at line 373 of file scsicmds.h.


#define SCSI_POW_COND_IDLE   0x2

Definition at line 374 of file scsicmds.h.



Definition at line 375 of file scsicmds.h.


#define SCSI_PT_CDROM   0x5

Definition at line 194 of file scsicmds.h.



Definition at line 191 of file scsicmds.h.


#define SCSI_PT_ENCLOSURE   0xd

Definition at line 197 of file scsicmds.h.


#define SCSI_PT_HOST_MANAGED   0x14 /* Zoned disk */

Definition at line 199 of file scsicmds.h.



Definition at line 196 of file scsicmds.h.


#define SCSI_PT_OPTICAL   0x7

Definition at line 195 of file scsicmds.h.


#define SCSI_PT_RBC   0xe

Definition at line 198 of file scsicmds.h.



Definition at line 192 of file scsicmds.h.


#define SCSI_PT_WO   0x4 /* write once device */

Definition at line 193 of file scsicmds.h.



Definition at line 331 of file scsicmds.h.


#define SCSI_SK_COMPLETED   0xf

Definition at line 333 of file scsicmds.h.


#define SCSI_SK_DATA_PROTECT   0x7

Definition at line 330 of file scsicmds.h.



Definition at line 327 of file scsicmds.h.



Definition at line 328 of file scsicmds.h.


#define SCSI_SK_MEDIUM_ERROR   0x3

Definition at line 326 of file scsicmds.h.


#define SCSI_SK_MISCOMPARE   0xe

Definition at line 332 of file scsicmds.h.


#define SCSI_SK_NO_SENSE   0x0

Definition at line 323 of file scsicmds.h.


#define SCSI_SK_NOT_READY   0x2

Definition at line 325 of file scsicmds.h.



Definition at line 324 of file scsicmds.h.



Definition at line 329 of file scsicmds.h.



Definition at line 320 of file scsicmds.h.



Definition at line 379 of file scsicmds.h.


#define SCSI_TIMEOUT_SELF_TEST   (5 * 60 * 60) /* allow max 5 hours for */

Definition at line 382 of file scsicmds.h.


#define SCSI_TPROTO_1394   3

Definition at line 205 of file scsicmds.h.


#define SCSI_TPROTO_ADT   7

Definition at line 209 of file scsicmds.h.


#define SCSI_TPROTO_ATA   8

Definition at line 210 of file scsicmds.h.


#define SCSI_TPROTO_FCP   0

Definition at line 202 of file scsicmds.h.



Definition at line 207 of file scsicmds.h.


#define SCSI_TPROTO_NONE   0xf

Definition at line 214 of file scsicmds.h.


#define SCSI_TPROTO_PCIE   0xb /* includes NVMe */

Definition at line 213 of file scsicmds.h.


#define SCSI_TPROTO_SAS   6

Definition at line 208 of file scsicmds.h.


#define SCSI_TPROTO_SOP   0xa /* SCSI over PCIe */

Definition at line 212 of file scsicmds.h.


#define SCSI_TPROTO_SPI   1

Definition at line 203 of file scsicmds.h.


#define SCSI_TPROTO_SRP   4 /* SCSI over RDMA */

Definition at line 206 of file scsicmds.h.


#define SCSI_TPROTO_SSA   2

Definition at line 204 of file scsicmds.h.


#define SCSI_TPROTO_UAS   9 /* USB attached SCSI */

Definition at line 211 of file scsicmds.h.



Definition at line 311 of file scsicmds.h.



Definition at line 315 of file scsicmds.h.


#define SCSI_VPD_BLOCK_LIMITS   0xb0

Definition at line 314 of file scsicmds.h.



Definition at line 309 of file scsicmds.h.



Definition at line 310 of file scsicmds.h.



Definition at line 316 of file scsicmds.h.



Definition at line 312 of file scsicmds.h.



Definition at line 313 of file scsicmds.h.



Definition at line 307 of file scsicmds.h.



Definition at line 308 of file scsicmds.h.



Definition at line 317 of file scsicmds.h.


#define SCSICMDS_H_CVSID   "$Id: scsicmds.h 5462 2023-03-13 10:45:06Z chrfranke $\n"

Definition at line 22 of file scsicmds.h.


#define SEAGATE_CACHE_LPAGE   0x37

Definition at line 257 of file scsicmds.h.



Definition at line 259 of file scsicmds.h.


#define SEAGATE_FARM_CURRENT_L_SPAGE   0x3 /* 0x3d,0x3 */

Definition at line 262 of file scsicmds.h.


#define SEAGATE_FARM_LPAGE   0x3d

Definition at line 258 of file scsicmds.h.



Definition at line 232 of file scsicmds.h.


#define SEND_DIAGNOSTIC   0x1d

Definition at line 64 of file scsicmds.h.


#define SERVICE_ACTION_IN_16   0x9e

Definition at line 82 of file scsicmds.h.


#define SIMPLE_ERR_ABORTED_COMMAND   11 /* probably transport error */

Definition at line 358 of file scsicmds.h.


#define SIMPLE_ERR_BAD_FIELD   3 /* in cbd */

Definition at line 350 of file scsicmds.h.



Definition at line 349 of file scsicmds.h.


#define SIMPLE_ERR_BAD_PARAM   4 /* in data */

Definition at line 351 of file scsicmds.h.


#define SIMPLE_ERR_BAD_RESP   5 /* response fails sanity */

Definition at line 352 of file scsicmds.h.


#define SIMPLE_ERR_BECOMING_READY   7 /* device will be ready soon */

Definition at line 354 of file scsicmds.h.


#define SIMPLE_ERR_MEDIUM_HARDWARE   9 /* medium or hardware error */

Definition at line 356 of file scsicmds.h.


#define SIMPLE_ERR_MISCOMPARE   13 /* from VERIFY commands */

Definition at line 360 of file scsicmds.h.


#define SIMPLE_ERR_NO_MEDIUM   6 /* no medium present */

Definition at line 353 of file scsicmds.h.



Definition at line 348 of file scsicmds.h.


#define SIMPLE_ERR_PROTECTION   12 /* data protect sense key */

Definition at line 359 of file scsicmds.h.


#define SIMPLE_ERR_TRY_AGAIN   8 /* some warning, try again */

Definition at line 355 of file scsicmds.h.


#define SIMPLE_ERR_UNKNOWN   10 /* unknown sense value */

Definition at line 357 of file scsicmds.h.


#define SIMPLE_NO_ERROR   0

Definition at line 347 of file scsicmds.h.


#define SS_MEDIA_LPAGE   0x11 /* SBC-3 */

Definition at line 233 of file scsicmds.h.


#define START_STOP_UNIT   0x1b

Definition at line 73 of file scsicmds.h.



Definition at line 230 of file scsicmds.h.


#define SUPP_SPAGE_L_SPAGE   0xff /* 0x0,0xff pages+subpages */

Definition at line 254 of file scsicmds.h.


#define SUPPORTED_LPAGES   0x00

Definition at line 218 of file scsicmds.h.


#define TAPE_ALERTS_LPAGE   0x2e

Definition at line 269 of file scsicmds.h.


#define TEMPERATURE_LPAGE   0x0d

Definition at line 229 of file scsicmds.h.


#define TEST_UNIT_READY   0x0

Definition at line 34 of file scsicmds.h.


#define UTILIZATION_L_SPAGE   0x1 /* 0xe,0x1 */

Definition at line 249 of file scsicmds.h.


#define VENDOR_UNIQUE_PAGE   0x00

Definition at line 272 of file scsicmds.h.



Definition at line 223 of file scsicmds.h.



Definition at line 278 of file scsicmds.h.



Definition at line 220 of file scsicmds.h.


#define XOR_CONTROL_MODE_PAGE   0x10

Definition at line 281 of file scsicmds.h.


#define ZB_DEV_STATS_L_SPAGE   0x1 /* 0x14,0x1 */

Definition at line 250 of file scsicmds.h.

Function Documentation

◆ dStrHex()

void dStrHex ( const uint8_t *  up,
int  len,
int  no_ascii 

Definition at line 368 of file scsicmds.cpp.

◆ dStrHexFp()

void dStrHexFp ( const uint8_t *  up,
int  len,
int  no_ascii,
FILE *  fp 

Definition at line 344 of file scsicmds.cpp.

◆ is_scsi_cdb()

bool is_scsi_cdb ( const uint8_t *  cdbp,
int  clen 

Definition at line 391 of file scsicmds.cpp.

◆ scsi_decode_lu_dev_id()

int scsi_decode_lu_dev_id ( const unsigned char *  b,
int  blen,
char *  s,
int  slen,
int *  transport 

Definition at line 747 of file scsicmds.cpp.

◆ scsi_do_sense_disect()

void scsi_do_sense_disect ( const struct scsi_cmnd_io in,
struct scsi_sense_disect out 

Definition at line 565 of file scsicmds.cpp.

◆ scsi_format_id_string()

void scsi_format_id_string ( char *  out,
const uint8_t *  in,
int  n 

Definition at line 3115 of file scsicmds.cpp.

◆ scsi_get_opcode_name()

const char * scsi_get_opcode_name ( const uint8_t *  cdbp)

Definition at line 511 of file scsicmds.cpp.

◆ scsi_get_sense_key_str()

char * scsi_get_sense_key_str ( int  sense_key,
int  buff_len,
char *  buff 

Definition at line 695 of file scsicmds.cpp.

◆ scsi_IsExceptionControlEnabled()

int scsi_IsExceptionControlEnabled ( const struct scsi_iec_mode_page iecp)

Definition at line 1885 of file scsicmds.cpp.

◆ scsi_IsWarningEnabled()

int scsi_IsWarningEnabled ( const struct scsi_iec_mode_page iecp)

Definition at line 1899 of file scsicmds.cpp.

◆ scsi_pass_through_yield_sense()

bool scsi_pass_through_yield_sense ( scsi_device device,
scsi_cmnd_io iop,
struct scsi_sense_disect sinfo 

Definition at line 1543 of file scsicmds.cpp.

◆ scsi_vpd_dev_id_iter()

int scsi_vpd_dev_id_iter ( const unsigned char *  initial_desig_desc,
int  page_len,
int *  off,
int  m_assoc,
int  m_desig_type,
int  m_code_set 

Definition at line 718 of file scsicmds.cpp.

◆ scsiCheckIE()

int scsiCheckIE ( scsi_device device,
int  hasIELogPage,
int  hasTempLogPage,
uint8_t *  asc,
uint8_t *  ascq,
uint8_t *  currenttemp,
uint8_t *  triptemp 

Definition at line 2026 of file scsicmds.cpp.

◆ scsiCountFailedSelfTests()

int scsiCountFailedSelfTests ( scsi_device device,
int  noisy 

Definition at line 2720 of file scsicmds.cpp.

◆ scsiDecodeErrCounterPage()

void scsiDecodeErrCounterPage ( unsigned char *  resp,
struct scsiErrorCounter ecp,
int  allocLen 

Definition at line 2607 of file scsicmds.cpp.

◆ scsiDecodeNonMediumErrPage()

void scsiDecodeNonMediumErrPage ( unsigned char *  resp,
struct scsiNonMediumError nmep,
int  allocLen 

Definition at line 2652 of file scsicmds.cpp.

◆ scsiErrString()

const char * scsiErrString ( int  scsiErr)

Definition at line 630 of file scsicmds.cpp.

◆ scsiFetchControlGLTSD()

int scsiFetchControlGLTSD ( scsi_device device,
int  modese_len,
int  current 

Definition at line 2799 of file scsicmds.cpp.

◆ scsiFetchExtendedSelfTestTime()

int scsiFetchExtendedSelfTestTime ( scsi_device device,
int *  durationSec,
int  modese_len 

Definition at line 2555 of file scsicmds.cpp.

◆ scsiFetchIECmpage()

int scsiFetchIECmpage ( scsi_device device,
struct scsi_iec_mode_page iecp,
int  modese_len 

Definition at line 1838 of file scsicmds.cpp.

◆ scsiFetchTransportProtocol()

int scsiFetchTransportProtocol ( scsi_device device,
int  modese_len 

Definition at line 3055 of file scsicmds.cpp.

◆ scsiGetIEString()

char * scsiGetIEString ( uint8_t  asc,
uint8_t  ascq,
char *  b,
int  blen 

Definition at line 3196 of file scsicmds.cpp.

◆ scsiGetRPM()

int scsiGetRPM ( scsi_device device,
int  modese_len,
int *  form_factorp,
int *  haw_zbcp 

Definition at line 2836 of file scsicmds.cpp.

◆ scsiGetSetCache()

int scsiGetSetCache ( scsi_device device,
int  modese_len,
short int *  wce,
short int *  rcd 

Definition at line 2881 of file scsicmds.cpp.

◆ scsiGetSize()

uint64_t scsiGetSize ( scsi_device device,
bool  avoid_rcap16,
struct scsi_readcap_resp srrp 

Definition at line 1713 of file scsicmds.cpp.

◆ scsiGetTemp()

int scsiGetTemp ( scsi_device device,
uint8_t *  currenttemp,
uint8_t *  triptemp 

Definition at line 1998 of file scsicmds.cpp.

◆ scsiInquiryVpd()

int scsiInquiryVpd ( scsi_device device,
int  vpd_page,
uint8_t *  pBuf,
int  bufLen 

Definition at line 1210 of file scsicmds.cpp.

◆ scsiLogSelect()

int scsiLogSelect ( scsi_device device,
int  pcr,
int  sp,
int  pc,
int  pagenum,
int  subpagenum,
uint8_t *  pBuf,
int  bufLen 

Definition at line 962 of file scsicmds.cpp.

◆ scsiLogSense()

int scsiLogSense ( scsi_device device,
int  pagenum,
int  subpagenum,
uint8_t *  pBuf,
int  bufLen,
int  known_resp_len 

Definition at line 873 of file scsicmds.cpp.

◆ scsiModePageOffset()

int scsiModePageOffset ( const uint8_t *  resp,
int  len,
int  modese_len 

Definition at line 1795 of file scsicmds.cpp.

◆ scsiModeSelect()

int scsiModeSelect ( scsi_device device,
int  sp,
uint8_t *  pBuf,
int  bufLen 

Definition at line 1040 of file scsicmds.cpp.

◆ scsiModeSelect10()

int scsiModeSelect10 ( scsi_device device,
int  sp,
uint8_t *  pBuf,
int  bufLen 

Definition at line 1123 of file scsicmds.cpp.

◆ scsiModeSense()

int scsiModeSense ( scsi_device device,
int  pagenum,
int  subpagenum,
int  pc,
uint8_t *  pBuf,
int  bufLen 

Definition at line 994 of file scsicmds.cpp.

◆ scsiModeSense10()

int scsiModeSense10 ( scsi_device device,
int  pagenum,
int  subpagenum,
int  pc,
uint8_t *  pBuf,
int  bufLen 

Definition at line 1079 of file scsicmds.cpp.

◆ scsiReadCapacity10()

int scsiReadCapacity10 ( scsi_device device,
unsigned int *  last_lbp,
unsigned int *  lb_sizep 

Definition at line 1609 of file scsicmds.cpp.

◆ scsiReadCapacity16()

int scsiReadCapacity16 ( scsi_device device,
uint8_t *  pBuf,
int  bufLen 

Definition at line 1645 of file scsicmds.cpp.

◆ scsiReadDefect10()

int scsiReadDefect10 ( scsi_device device,
int  req_plist,
int  req_glist,
int  dl_format,
uint8_t *  pBuf,
int  bufLen 

Definition at line 1472 of file scsicmds.cpp.

◆ scsiReadDefect12()

int scsiReadDefect12 ( scsi_device device,
int  req_plist,
int  req_glist,
int  dl_format,
int  addrDescIndex,
uint8_t *  pBuf,
int  bufLen 

Definition at line 1506 of file scsicmds.cpp.

◆ scsiRequestSense()

int scsiRequestSense ( scsi_device device,
struct scsi_sense_disect sense_info 

Definition at line 1268 of file scsicmds.cpp.

◆ scsiRSOCcmd()

int scsiRSOCcmd ( scsi_device device,
bool  rctd,
uint8_t  rep_opt,
uint8_t  opcode,
uint16_t  serv_act,
uint8_t *  pBuf,
int  bufLen,
int &  rspLen 

Definition at line 1672 of file scsicmds.cpp.

◆ scsiSelfTestInProgress()

int scsiSelfTestInProgress ( scsi_device device,
int *  inProgress 

Definition at line 2771 of file scsicmds.cpp.

◆ scsiSendDiagnostic()

int scsiSendDiagnostic ( scsi_device device,
int  functioncode,
uint8_t *  pBuf,
int  bufLen 

Definition at line 1392 of file scsicmds.cpp.

◆ scsiSetControlGLTSD()

int scsiSetControlGLTSD ( scsi_device device,
int  enabled,
int  modese_len 

Definition at line 2985 of file scsicmds.cpp.

◆ scsiSetExceptionControlAndWarning()

int scsiSetExceptionControlAndWarning ( scsi_device device,
int  enabled,
const struct scsi_iec_mode_page iecp 

Definition at line 1928 of file scsicmds.cpp.

◆ scsiSetPowerCondition()

int scsiSetPowerCondition ( scsi_device device,
int  power_cond,
int  pcond_modifier = 0 

Definition at line 1361 of file scsicmds.cpp.

◆ scsiSimpleSenseFilter()

int scsiSimpleSenseFilter ( const struct scsi_sense_disect sinfo)

Definition at line 587 of file scsicmds.cpp.

◆ scsiSmartDefaultSelfTest()

int scsiSmartDefaultSelfTest ( scsi_device device)

Definition at line 2485 of file scsicmds.cpp.

◆ scsiSmartExtendCapSelfTest()

int scsiSmartExtendCapSelfTest ( scsi_device device)

Definition at line 2530 of file scsicmds.cpp.

◆ scsiSmartExtendSelfTest()

int scsiSmartExtendSelfTest ( scsi_device device)

Definition at line 2507 of file scsicmds.cpp.

◆ scsiSmartSelfTestAbort()

int scsiSmartSelfTestAbort ( scsi_device device)

Definition at line 2542 of file scsicmds.cpp.

◆ scsiSmartShortCapSelfTest()

int scsiSmartShortCapSelfTest ( scsi_device device)

Definition at line 2519 of file scsicmds.cpp.

◆ scsiSmartShortSelfTest()

int scsiSmartShortSelfTest ( scsi_device device)

Definition at line 2496 of file scsicmds.cpp.

◆ scsiStdInquiry()

int scsiStdInquiry ( scsi_device device,
uint8_t *  pBuf,
int  bufLen 

Definition at line 1163 of file scsicmds.cpp.

◆ scsiTapeAlertsChangerDevice()

const char * scsiTapeAlertsChangerDevice ( unsigned short  code)

Definition at line 2475 of file scsicmds.cpp.

◆ scsiTapeAlertsTapeDevice()

const char * scsiTapeAlertsTapeDevice ( unsigned short  code)

Definition at line 2327 of file scsicmds.cpp.

◆ scsiTestUnitReady()

int scsiTestUnitReady ( scsi_device device)

Definition at line 1456 of file scsicmds.cpp.

◆ sg_scsi_sense_desc_find()

const unsigned char * sg_scsi_sense_desc_find ( const unsigned char *  sensep,
int  sense_len,
int  desc_type 

Definition at line 3088 of file scsicmds.cpp.

Variable Documentation

◆ scsi_debugmode

unsigned char scsi_debugmode

Definition at line 45 of file scsicmds.cpp.

◆ supported_vpd_pages_p

supported_vpd_pages* supported_vpd_pages_p

Definition at line 47 of file scsicmds.cpp.