Linuxのmisc_deviceドライバを作成していますが、読み込みに問題があります。現在、カーネルはドライバを高速デバイスと見なしています。ドライバの読み込みは、(ディスクからファイルを読み込むときのように)ユーザスペースの呼び出し元が必要とするデータが使用可能になるまでバッファリングされます。つまり、バッファがいっぱいになるまで、readシステムコールは返されません。私はその動作を変更し、カーネルに(ソケット上の読み込みのように)いくつかのデータが利用可能になるとすぐにシステムコールを返すように指示します。バッファなしmisc_device - Linuxカーネルドライバを読み込みます
可能ですか?どうやって?私はそれを完全に間違っているのですか?
ありがとうございます!
あなたは9週間後、まだこの質問に興味があるなら知っているが、しないでください:あなたはブロッキングがカーネル内で起こっていることを確信していますか?私の思い出は、構造ファイルf_flagsのO_NONBLOCKをチェックし、必要に応じて入力待ちをブロックするのはドライバの仕事であるということです。それ以外の場合、O_NONBLOCKが設定されていない場合は、各読み込み呼び出しでできるだけ多くのデータを読み込んで一度に返す必要があります。読み込み呼び出しが最後に発生した場合は、データを読み込まずに0バイトを返して呼び出し元に停止します。 O_NONBLOCKを設定するかどうかは、もちろんユーザスペースの仕事です。 – michaeljt