1#ifndef SG_LIB_DATA_H 2#define SG_LIB_DATA_H 3 4/* 5 * Copyright (c) 2007-2018 Douglas Gilbert. 6 * All rights reserved. 7 * Use of this source code is governed by a BSD-style 8 * license that can be found in the BSD_LICENSE file. 9 */ 10 11/* 12 * This header file contains some structure declarations and array name 13 * declarations which are defined in the sg_lib_data.c . 14 * Typically this header does not need to be exposed to users of the 15 * sg_lib interface declared in sg_libs.h . 16 */ 17 18#include <stdint.h> 19 20#ifdef __cplusplus 21extern "C" { 22#endif 23 24/* Operation codes with associated service actions that change or qualify 25 * the command name */ 26#define SG_EXTENDED_COPY 0x83 /* since spc4r34 became next entry */ 27#define SG_3PARTY_COPY_OUT 0x83 /* new in spc4r34: Third party copy out */ 28#define SG_RECEIVE_COPY 0x84 /* since spc4r34 became next entry */ 29#define SG_3PARTY_COPY_IN 0x84 /* new in spc4r34: Third party copy in */ 30#define SG_MAINTENANCE_IN 0xa3 31#define SG_MAINTENANCE_OUT 0xa4 32#define SG_PERSISTENT_RESERVE_IN 0x5e 33#define SG_PERSISTENT_RESERVE_OUT 0x5f 34#define SG_READ_ATTRIBUTE 0x8c 35#define SG_READ_BUFFER 0x3c /* now READ BUFFER(10) */ 36#define SG_READ_BUFFER_16 0x9b 37#define SG_READ_POSITION 0x34 /* SSC command with service actions */ 38#define SG_SANITIZE 0x48 39#define SG_SERVICE_ACTION_BIDI 0x9d 40#define SG_SERVICE_ACTION_IN_12 0xab 41#define SG_SERVICE_ACTION_IN_16 0x9e 42#define SG_SERVICE_ACTION_OUT_12 0xa9 43#define SG_SERVICE_ACTION_OUT_16 0x9f 44#define SG_VARIABLE_LENGTH_CMD 0x7f 45#define SG_WRITE_BUFFER 0x3b 46#define SG_ZONING_OUT 0x94 47#define SG_ZONING_IN 0x95 48 49 50 51struct sg_lib_simple_value_name_t { 52 int value; 53 const char * name; 54}; 55 56struct sg_lib_value_name_t { 57 int value; 58 int peri_dev_type; /* 0 -> SPC and/or PDT_DISK, >0 -> PDT */ 59 const char * name; 60}; 61 62struct sg_lib_asc_ascq_t { 63 unsigned char asc; /* additional sense code */ 64 unsigned char ascq; /* additional sense code qualifier */ 65 const char * text; 66}; 67 68struct sg_lib_asc_ascq_range_t { 69 unsigned char asc; /* additional sense code (ASC) */ 70 unsigned char ascq_min; /* ASCQ minimum in range */ 71 unsigned char ascq_max; /* ASCQ maximum in range */ 72 const char * text; 73}; 74 75/* First use: SCSI status, sense_key, asc, ascq tuple */ 76struct sg_lib_4tuple_u8 { 77 uint8_t t1; 78 uint8_t t2; 79 uint8_t t3; 80 uint8_t t4; 81}; 82 83 84extern const char * sg_lib_version_str; 85 86extern struct sg_lib_value_name_t sg_lib_normal_opcodes[]; 87extern struct sg_lib_value_name_t sg_lib_read_buff_arr[]; 88extern struct sg_lib_value_name_t sg_lib_write_buff_arr[]; 89extern struct sg_lib_value_name_t sg_lib_maint_in_arr[]; 90extern struct sg_lib_value_name_t sg_lib_maint_out_arr[]; 91extern struct sg_lib_value_name_t sg_lib_pr_in_arr[]; 92extern struct sg_lib_value_name_t sg_lib_pr_out_arr[]; 93extern struct sg_lib_value_name_t sg_lib_sanitize_sa_arr[]; 94extern struct sg_lib_value_name_t sg_lib_serv_in12_arr[]; 95extern struct sg_lib_value_name_t sg_lib_serv_out12_arr[]; 96extern struct sg_lib_value_name_t sg_lib_serv_in16_arr[]; 97extern struct sg_lib_value_name_t sg_lib_serv_out16_arr[]; 98extern struct sg_lib_value_name_t sg_lib_serv_bidi_arr[]; 99extern struct sg_lib_value_name_t sg_lib_xcopy_sa_arr[]; 100extern struct sg_lib_value_name_t sg_lib_rec_copy_sa_arr[]; 101extern struct sg_lib_value_name_t sg_lib_variable_length_arr[]; 102extern struct sg_lib_value_name_t sg_lib_zoning_out_arr[]; 103extern struct sg_lib_value_name_t sg_lib_zoning_in_arr[]; 104extern struct sg_lib_value_name_t sg_lib_read_attr_arr[]; 105extern struct sg_lib_value_name_t sg_lib_read_pos_arr[]; 106extern struct sg_lib_asc_ascq_range_t sg_lib_asc_ascq_range[]; 107extern struct sg_lib_asc_ascq_t sg_lib_asc_ascq[]; 108extern struct sg_lib_value_name_t sg_lib_scsi_feature_sets[]; 109extern const char * sg_lib_sense_key_desc[]; 110extern const char * sg_lib_pdt_strs[]; 111extern const char * sg_lib_transport_proto_strs[]; 112extern int sg_lib_pdt_decay_arr[]; 113 114extern struct sg_lib_value_name_t sg_lib_nvme_cmd_status_arr[]; 115extern struct sg_lib_4tuple_u8 sg_lib_scsi_status_sense_arr[]; 116 117#ifdef __cplusplus 118} 119#endif 120 121#endif 122