カーネル空間デバイスからユーザ空間プロセスにデータを読み込むのに好ましい方法は何ですか?

カーネル空間デバイスからユーザ空間プロセスにデータを読み込むのに好ましい方法は何ですか?

現在、デバイスノードのファイルディスクリプタを最初に開き、read()を呼び出してからファイルディスクリプタを再び閉じるようにセンサーを照会しています。動的センサーデータの場合は、このプロセスを無限ループで繰り返します。

すでにメモリに存在するデータのコピーを作成するよりも、デバイスツリー内のファイルなどの構造内にすでに存在するデータをミラーリングまたはシンボリックリンクするより経済的な方法があるかどうか疑問に思います。

ベストアンサー1

1つのオプションは、カスタムファイルシステムを作成し、それをマウントしてデータを公開することです。おそらくクリーンなソリューションは、ユーザースペースファイルシステム、または古代のmtools(1)読み取り/書き込みFATファイルシステムなどの一部のユーザースペース専用のオプションです。

それにもかかわらず、そのデータがどのように使用されるかに応じて、多くが異なります。パフォーマンスが本当に重要でない限り、純粋なユーザースペースソリューションは、おそらく構築するのが最も簡単で、最も柔軟で未来志向です。カーネル空間にとどまるのは保証する開発速度が速い場合は、公式カーネルに作業を含めるか、モジュールから正式にエクスポートされたインターフェースのみを厳密に使用しない限り、問題が発生する可能性があります。

おすすめ記事