打开 char dev 文件时出现 ioctl 错误

ioctl error when open char dev file

我正在编写驱动程序代码,以从 x86 读取一些寄存器值。当我 运行 我的用户 space 应用程序时,我收到以下错误。

ioctl:Inappropriate ioctl for device

这里是代码嗅探..

fd = open_drvfile();
if(ioctl(fd, IOCTL_MSR_CMDS, (long long)msr_start) == -1 ) {
    perror("ioctl:");
    exit (0);
}

和open_drvfile() 只需打开(创建并打开)char 文件,如下所示

fd = open("/dev/" DEV_NAME, O_RDWR|O_CREAT);
if (fd == -1) {
    perror("Failed to open /dev/" DEV_NAME);
}
return fd;

有一点我在这方面犯了错误吗?

字符设备意味着它应使用 mknod() 创建,而不是使用 open() flags 下的 O_CREAT (这将创建一个常规文件,而不是字符设备)。

(见问题评论)。