打开 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
(这将创建一个常规文件,而不是字符设备)。
(见问题评论)。
我正在编写驱动程序代码,以从 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
(这将创建一个常规文件,而不是字符设备)。
(见问题评论)。