Linux块设备IOCTL cmd代码

时间:2019-11-15 13:25:34

标签: linux-device-driver ioctl

我正在开发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)

1 个答案:

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