2016-08-04 5 views
1

私は私のユーザースペースアプリケーションを実行したときに、私は以下のエラーを持っていました。開いているcharデベロッパーファイルのioctlエラー

の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

私はあなたが何をしようとしているのかよく分かりませんが、質問のタイトルでcharデバイスを参照しているので、open()の下のO_CREATフラグはあまり意味がありません。 'open()'の前に 'mknod()'を使ってcharデバイスを作成しましたか? – pah

+1

私はファイルを作成して開くためにopen()を使用しています(ファイルが存在しないため)。私はこれが間違っていたと思う。あなたの答えを見た後、私はmknod()を使ってファイルを作成し、O_CREATを削除しました。今は期待通りに動作しています。ありがとう。 –

+0

私は答えを投稿しますので、他の人に役立つかもしれません:) – pah

答えて

0

チャーデバイスはO_CREAT(通常ファイルではなく、チャーデバイスを作成する)flagsopen()下でそれがmknod()で作成されなければならないことを意味する、としません。

(質問のコメントを参照)。

関連する問題