6.2. dxfer_direction

dxfer_direction 的类型是 int。 此值必须是以下值之一

当命令没有关联的数据传输时(例如 TEST UNIT READY),应该使用值 SG_DXFER_NONE。当数据从用户内存移动到设备时(例如 WRITE),应该使用值 SG_DXFER_TO_DEV。当数据从设备移动到用户内存时(例如 READ),应该使用值 SG_DXFER_FROM_DEV。

值 SG_DXFER_TO_FROM_DEV 仅与间接 IO 相关(否则它会被视为 SG_DXFER_FROM_DEV)。数据从用户空间移动到内核缓冲区。然后执行命令,很可能类似 READ 的命令将数据从设备传输到内核缓冲区。最后,内核缓冲区被复制回用户空间。此技术允许应用程序编写者初始化缓冲区,并可能推断出实际从设备读取的字节数(即检测欠载)。如果支持 'resid',则最好使用它。

值 SG_DXFER_UNKNOWN 用于那些(罕见的)数据方向未知的情况。当 sg 接口层中没有相关的方向信息时,它可能对现有应用程序的向后兼容性很有用。选择此选项会带来(轻微的)性能“损失”(例如在 PCI 总线上)。一些最新的伪设备驱动程序(例如 USB 大容量存储)可能在处理此值时遇到问题(尤其是在供应商特定的 SCSI 命令上)。

注意:'dxfer_direction' 必须具有五个指示值之一,并且不能未初始化或为零。

如果 'dxfer_len' 为零,则所有值都将被视为 SG_DXFER_NONE。