1
我正在寫一個驅動程序代碼,以從x86讀取一些寄存器值,當我運行我的用戶空間應用程序時,出現以下錯誤。打開char dev文件時發生ioctl錯誤
IOCTL:用於設備
這裏是代碼嗅不適當的ioctl ..
fd = open_drvfile();
if(ioctl(fd, IOCTL_MSR_CMDS, (long long)msr_start) == -1) {
perror("ioctl:");
exit (0);
}
和open_drvfile()剛剛打開(創建和打開)字符文件如下
fd = open("/dev/" DEV_NAME, O_RDWR|O_CREAT);
if (fd == -1) {
perror("Failed to open /dev/" DEV_NAME);
}
return fd;
可以有一個點,我犯了這個錯誤?
我不太明白你要做什麼,但是因爲你在問題標題中引用了一個char設備,所以open()下面的O_CREAT標誌對我來說沒有什麼意義。你在'open()'之前用'mknod()'創建了char設備嗎? – pah
我正在使用open()創建並打開文件(因爲文件不存在)。我認爲這是錯誤的。在看到您的答案後,我使用mknod()創建文件並刪除了O_CREAT,現在它按預期工作。謝謝。 –
我會發布答案,所以它可能會對其他人有所幫助:) – pah