我正在编写驱动程序代码,从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;
可能有一点我错了吗?
答案 0 :(得分:0)
char设备意味着它应使用mknod()
创建,而不是O_CREAT
open()
下的flags
创建(这将创建常规文件,而不是char设备)。
(见问题评论)。