编写设备驱动程序

getinfo() 入口点(SCSI 目标驱动程序)

SCSI 目标驱动程序的 getinfo(9E) 例程与其他驱动程序的相应例程基本相同(有关 DDI_INFO_DEVT2INSTANCE 案例的更多信息,请参见 getinfo() 入口点)。但是,如果是 getinfo() 例程的 DDI_INFO_DEVT2DEVINFO,则目标驱动程序必须返回指向其 dev_info 节点的指针。该指针可以保存在驱动程序状态结构中,也可以从 scsi_device(9S) 结构的 sd_dev 字段中检索。以下示例给出了替换 SCSI 目标驱动程序 getinfo() 代码段。


示例 17–4 替代 SCSI 目标驱动程序 getinfo() 代码段

case DDI_INFO_DEVT2DEVINFO:
    dev = (dev_t)arg;
    instance = getminor(dev);
    xsp = ddi_get_soft_state(statep, instance);
    if (xsp == NULL)
        return (DDI_FAILURE);
    *result = (void *)xsp->sdp->sd_dev;
    return (DDI_SUCCESS);