在linux 2.6.34内核或更旧的版本中,谁在按下cdrom的弹出按钮时发送scsi cmd来开门?

在linux 2.6.34内核或更旧的版本中,谁在按下cdrom的弹出按钮时发送scsi cmd来开门?

scsi cmd 类似于 0x1b 0x00 0x00 0x02。

我正在尝试研究内核,但无法弄清楚。

按下或有人轮询 cdrom 状态时是否会产生中断?

我认为它不是由 udev 规则调用的某些应用程序发送的,例如新系统。

答案1

弹出按钮由驱动器本身处理。您可以通过锁定介质(命令 1E,防止/允许介质移除;scsi_set_medium_removal在内核中)来防止驱动器处理弹出按下操作,内核会在安装 CD 时执行此操作,但除此之外该软件不参与处理弹出按下驱动器上的弹出按钮的反应。

在内核版本 2.6.34 中,SCSI 加载/卸载(弹出)命令称为GPCMD_START_STOP_UNIT,您会发现它在sr_tray_move中使用drivers/scsi/sr_ioctl.c

相关内容