#ifndef _SCSI_COMMON_H_
#define _SCSI_COMMON_H_
#include <linux/types.h>
#include <uapi/linux/pr.h>
#include <scsi/scsi_proto.h>
enum scsi_pr_type { … };
enum scsi_pr_type block_pr_type_to_scsi(enum pr_type type);
enum pr_type scsi_pr_type_to_block(enum scsi_pr_type type);
static inline unsigned
scsi_varlen_cdb_length(const void *hdr)
{ … }
extern const unsigned char scsi_command_size_tbl[8];
#define COMMAND_SIZE(opcode) …
static inline unsigned
scsi_command_size(const unsigned char *cmnd)
{ … }
static inline unsigned char
scsi_command_control(const unsigned char *cmnd)
{ … }
extern const char *scsi_device_type(unsigned type);
extern void int_to_scsilun(u64, struct scsi_lun *);
extern u64 scsilun_to_int(struct scsi_lun *);
struct scsi_sense_hdr { … };
static inline bool scsi_sense_valid(const struct scsi_sense_hdr *sshdr)
{ … }
extern bool scsi_normalize_sense(const u8 *sense_buffer, int sb_len,
struct scsi_sense_hdr *sshdr);
extern void scsi_build_sense_buffer(int desc, u8 *buf, u8 key, u8 asc, u8 ascq);
int scsi_set_sense_information(u8 *buf, int buf_len, u64 info);
int scsi_set_sense_field_pointer(u8 *buf, int buf_len, u16 fp, u8 bp, bool cd);
extern const u8 * scsi_sense_desc_find(const u8 * sense_buffer, int sb_len,
int desc_type);
#endif