CDROM功能 - 函数指针在哪里?

时间:2015-09-23 14:23:17

标签: linux scsi

我正在尝试调试标准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中函数指针指向哪里?

1 个答案:

答案 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}}