【发布时间】:2020-03-11 15:57:13
【问题描述】:
我正在开发一个 Linux 块驱动程序,目前正在测试它。我有一个 IOCTL 功能,目前什么都不做。我只是使用 printk 来打印 cmd 和 arg 参数。当 Linux 启动时,它使用 5331 的 cmd 和 0 的 arg 调用 IOCTL 函数。我试图找出这个 cmd 可能是什么。我唯一能找到的是对 CDROM 功能的引用。 Linux 认为我的设备是 CDROM 吗?如果是这样,我怎么能告诉它?谢谢
static int mydrv_ioctl(struct block_device *bdev, fmode_t mode, unsigned int cmd, unsigned long arg)
【问题讨论】:
-
我假设命令代码 5331 是十六进制的?在这种情况下,它确实是
CDROM_GET_CAPABILITY。也许有什么东西正在检查块设备是否是 CDROM。 -
我不确定它为什么会这样认为。目前我对Linux的了解还不够,不知道你是否可以设置一些参数让Linux知道驱动程序所针对的设备类型。