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

时间:2016-08-04 10:12:02

标签: c linux ioctl

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

  
    

ioctl:设备不适当的ioctl

  

这是代码嗅..

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;

可能有一点我错了吗?

1 个答案:

答案 0 :(得分:0)

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

(见问题评论)。