Index: fusl/include/scsi/sg.h |
diff --git a/fusl/include/scsi/sg.h b/fusl/include/scsi/sg.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..a7ac247e3ffade1a20770e2bc90119c7756eaf83 |
--- /dev/null |
+++ b/fusl/include/scsi/sg.h |
@@ -0,0 +1,129 @@ |
+#ifndef _SCSI_SG_H |
+#define _SCSI_SG_H |
+ |
+#define SG_DXFER_NONE -1 |
+#define SG_DXFER_TO_DEV -2 |
+#define SG_DXFER_FROM_DEV -3 |
+#define SG_DXFER_TO_FROM_DEV -4 |
+#define SG_FLAG_DIRECT_IO 1 |
+#define SG_FLAG_LUN_INHIBIT 2 |
+#define SG_FLAG_NO_DXFER 0x10000 |
+#define SG_INFO_OK_MASK 0x1 |
+#define SG_INFO_OK 0x0 |
+#define SG_INFO_CHECK 0x1 |
+#define SG_INFO_DIRECT_IO_MASK 0x6 |
+#define SG_INFO_INDIRECT_IO 0x0 |
+#define SG_INFO_DIRECT_IO 0x2 |
+#define SG_INFO_MIXED_IO 0x4 |
+#define SG_EMULATED_HOST 0x2203 |
+#define SG_SET_TRANSFORM 0x2204 |
+#define SG_GET_TRANSFORM 0x2205 |
+#define SG_SET_RESERVED_SIZE 0x2275 |
+#define SG_GET_RESERVED_SIZE 0x2272 |
+#define SG_GET_SCSI_ID 0x2276 |
+#define SG_SET_FORCE_LOW_DMA 0x2279 |
+#define SG_GET_LOW_DMA 0x227a |
+#define SG_SET_FORCE_PACK_ID 0x227b |
+#define SG_GET_PACK_ID 0x227c |
+#define SG_GET_NUM_WAITING 0x227d |
+#define SG_GET_SG_TABLESIZE 0x227F |
+#define SG_GET_VERSION_NUM 0x2282 |
+#define SG_SCSI_RESET 0x2284 |
+#define SG_SCSI_RESET_NOTHING 0 |
+#define SG_SCSI_RESET_DEVICE 1 |
+#define SG_SCSI_RESET_BUS 2 |
+#define SG_SCSI_RESET_HOST 3 |
+#define SG_IO 0x2285 |
+#define SG_GET_REQUEST_TABLE 0x2286 |
+#define SG_SET_KEEP_ORPHAN 0x2287 |
+#define SG_GET_KEEP_ORPHAN 0x2288 |
+#define SG_SCATTER_SZ (8 * 4096) |
+#define SG_DEFAULT_RETRIES 1 |
+#define SG_DEF_FORCE_LOW_DMA 0 |
+#define SG_DEF_FORCE_PACK_ID 0 |
+#define SG_DEF_KEEP_ORPHAN 0 |
+#define SG_DEF_RESERVED_SIZE SG_SCATTER_SZ |
+#define SG_MAX_QUEUE 16 |
+#define SG_BIG_BUFF SG_DEF_RESERVED_SIZE |
+#define SG_MAX_SENSE 16 |
+#define SG_SET_TIMEOUT 0x2201 |
+#define SG_GET_TIMEOUT 0x2202 |
+#define SG_GET_COMMAND_Q 0x2270 |
+#define SG_SET_COMMAND_Q 0x2271 |
+#define SG_SET_DEBUG 0x227e |
+#define SG_NEXT_CMD_LEN 0x2283 |
+#define SG_DEFAULT_TIMEOUT (60*100) /* 60*HZ */ |
+#define SG_DEF_COMMAND_Q 0 |
+#define SG_DEF_UNDERRUN_FLAG 0 |
+ |
+typedef struct sg_iovec { |
+ void *iov_base; |
+ unsigned long iov_len; |
+} sg_iovec_t; |
+ |
+typedef struct sg_io_hdr { |
+ int interface_id; |
+ int dxfer_direction; |
+ unsigned char cmd_len; |
+ unsigned char mx_sb_len; |
+ unsigned short iovec_count; |
+ unsigned dxfer_len; |
+ void *dxferp; |
+ unsigned char *cmdp; |
+ unsigned char *sbp; |
+ unsigned timeout; |
+ unsigned flags; |
+ int pack_id; |
+ void *usr_ptr; |
+ unsigned char status; |
+ unsigned char masked_status; |
+ unsigned char msg_status; |
+ unsigned char sb_len_wr; |
+ unsigned short host_status; |
+ unsigned short driver_status; |
+ int resid; |
+ unsigned int duration; |
+ unsigned int info; |
+} sg_io_hdr_t; |
+ |
+struct sg_scsi_id { |
+ int host_no; |
+ int channel; |
+ int scsi_id; |
+ int lun; |
+ int scsi_type; |
+ short h_cmd_per_lun; |
+ short d_queue_depth; |
+ int unused[2]; |
+}; |
+ |
+typedef struct sg_req_info { |
+ char req_state; |
+ char orphan; |
+ char sg_io_owned; |
+ char problem; |
+ int pack_id; |
+ void *usr_ptr; |
+ unsigned duration; |
+ int unused; |
+} sg_req_info_t; |
+ |
+typedef struct sg_io_hdr Sg_io_hdr; |
+typedef struct sg_io_vec Sg_io_vec; |
+typedef struct sg_scsi_id Sg_scsi_id; |
+typedef struct sg_req_info Sg_req_info; |
+ |
+struct sg_header { |
+ int pack_len; |
+ int reply_len; |
+ int pack_id; |
+ int result; |
+ unsigned twelve_byte:1; |
+ unsigned target_status:5; |
+ unsigned host_status:8; |
+ unsigned driver_status:8; |
+ unsigned other_flags:10; |
+ unsigned char sense_buffer[SG_MAX_SENSE]; |
+}; |
+ |
+#endif |