Linux SCSI 通用 (sg) HOWTO

Douglas Gilbert

2002-05-03

修订历史
修订 1.22002-05-03修订者: dpg
ENOMEM, EPERM; DRIVER_SENSE->CHECK_CONDITION
修订 1.12002-01-26修订者: dpg
更正, host_status, 奇数 dxfer_len
修订 1.02001-12-21修订者: dpg
原始版本, 替代 SCSI-PROGRAMMING-HOWTO

目录
1. 简介
2. sg 驱动程序的作用
3. 识别 SG 驱动程序的版本
4. 接口
5. 操作理论
6. sg_io_hdr_t 结构的详细信息
6.1. interface_id
6.2. dxfer_direction
6.3. cmd_len
6.4. mx_sb_len
6.5. iovec_count
6.6. dxfer_len
6.7. dxferp
6.8. cmdp
6.9. sbp
6.10. timeout
6.11. flags
6.12. pack_id
6.13. usr_ptr
6.14. status
6.15. masked_status
6.16. msg_status
6.17. sb_len_wr
6.18. host_status
6.19. driver_status
6.20. resid
6.21. duration
6.22. info
7. 系统调用
7.1. open()
7.2. write()
7.3. read()
7.4. poll()
7.5. close()
7.6. mmap()
7.7. fcntl(sg_fd, F_SETFL, oflags | FASYNC)
7.8. errno 中报告的错误
8. Ioctl()s
8.1. SG_IO
8.2. SG_GET_ACCESS_COUNT
8.3. SG_SET_COMMAND_Q (和 _GET_)
8.4. SG_SET_DEBUG
8.5. SG_EMULATED_HOST
8.6. SG_SET_KEEP_ORPHAN (和 _GET_)
8.7. SG_SET_FORCE_LOW_DMA
8.8. SG_GET_LOW_DMA
8.9. SG_NEXT_CMD_LEN
8.10. SG_GET_NUM_WAITING
8.11. SG_SET_FORCE_PACK_ID
8.12. SG_GET_PACK_ID
8.13. SG_GET_REQUEST_TABLE
8.14. SG_SET_RESERVED_SIZE (和 _GET_ )
8.15. SG_SCSI_RESET
8.16. SG_GET_SCSI_ID
8.17. SG_GET_SG_TABLESIZE
8.18. SG_GET_TIMEOUT
8.19. SG_SET_TIMEOUT
8.20. SG_SET_TRANSFORM
8.21. SG_GET_TRANSFORM
8.22. 版本 3 中移除的 Sg ioctls
8.23. SCSI_IOCTL_GET_IDLUN
8.24. SCSI_IOCTL_GET_PCI
8.25. SCSI_IOCTL_PROBE_HOST
8.26. SCSI_IOCTL_SEND_COMMAND
9. 直接和内存映射 IO
9.1. 直接 IO
9.2. 内存映射 IO
10. 驱动程序和模块初始化
11. Sg 和 "proc" 文件系统
11.1. /proc/scsi/sg/debug
12. sg 的异步用法
A. Sg3_utils 软件包
B. sg_header,原始的 sg 控制结构
C. 编程示例
D. 调试
E. 其他参考