我正在尝试调试标准linux CDROMEJECT即使磁盘弹出也会返回错误的问题。
使用标准弹出命令。
cdi->ops->lock_door(cdi, 0)
当我查看cdrom.c时,我可以看到弹出功能和错误(例如:http://lxr.free-electrons.com/source/drivers/cdrom/cdrom.c#L2303)。我很好,返回错误代码的位置,但你也有这样的行:
lock_door
现在lock_door
是一个函数指针(参见头文件here)。我的问题是我不能为我的生活找出sr_lock_door
指针指向哪个函数!我希望这指向一个函数,然后将一个SCSI命令发送到CD / DVD驱动器。
我怀疑我错过了一些基本但却不确定的东西!我知道在哪里找到struct cdrom_device_ops中函数指针指向哪里?
答案 0 :(得分:1)
如果您为“.lock_door”执行LXR“Freetext Search”
you can see
它是为scsi driver here设置的
如果你点击int sr_lock_door(struct cdrom_device_info *cdi, int lock) {
Scsi_CD *cd = cdi->handle;
return scsi_set_medium_removal(cd->device, lock ?
SCSI_REMOVAL_PREVENT : SCSI_REMOVAL_ALLOW);
}
你发现它在sr_ioctl.c中定义:
{{1}}