8.16. SG_GET_SCSI_ID

SG_GET_SCSI_ID 0x2276. 假设第三个参数指向 Sg_scsi_id 类型的对象 (参见 sg.h) 并填充它。 该结构包含 host_no、channel、scsi_id、lun、scsi_type、每个 lun 允许的命令数和 queue_depth 的整数值。 大部分信息可以从其他来源获得 (例如 SCSI_IOCTL_GET_IDLUN 和 SCSI_IOCTL_GET_BUS_NUMBER),但收集起来往往很麻烦。 每个 lun 允许的命令数和 queue_depth 可以洞察适配器和设备的命令队列能力。 后者(逻辑上)覆盖前者,前者只有在等于 queue_depth 时才有意义,这可能表明设备不支持排队命令(例如,大多数扫描仪)。
typedef struct sg_scsi_id { /* used by SG_GET_SCSI_ID ioctl() */
    int host_no;        /* as in "scsi<n>" where 'n' is one of 0, 1, 2 etc */
    int channel;
    int scsi_id;        /* scsi id of target device */
    int lun;
    int scsi_type;      /* TYPE_... defined in scsi/scsi.h */
    short h_cmd_per_lun;/* host (adapter) maximum commands per lun */
    short d_queue_depth;/* device (or adapter) maximum queue length */
    int unused[2];      /* probably find a good use, set 0 for now */
} sg_scsi_id_t;