我正在开发Linux块驱动程序,目前正在对其进行测试。我有一个IOCTL函数,目前不执行任何操作。我只是使用printk打印cmd和arg参数。当Linux启动时,它将使用5331的cmd和arg的0调用IOCTL函数。我试图找出此cmd可能是什么。我唯一能找到的是对CDROM功能的引用。 Linux是否认为我的设备是CDROM?如果可以的话,我该如何说呢?谢谢
static int mydrv_ioctl(struct block_device *bdev, fmode_t mode, unsigned int cmd, unsigned long arg)
答案 0 :(得分:0)
我找到了一个用于ram块设备的示例代码。它们实现了一个ioctl函数,并检查0x5331代码。如果未设置标志GENHD_FL_CD,它们只会返回错误。
case CDROM_GET_CAPABILITY: //0x5331 / * get capabilities * /
{
struct gendisk *disk = bdev->bd_disk;
if (bdev->bd_disk && (disk->flags & GENHD_FL_CD))
ret = SUCCESS;
else
ret = -EINVAL;
break;
}