ユーザーが Linux ユーザー空間でコマンドを使用するように要求するたびに、カスタム ハードウェアの統計情報が表示されるようになりました。この実装は、現在 PROC インターフェイスを使用しています。統計情報の追加を開始すると、PROC インターフェイスが 1 ページに制限されていたため、データ全体を取得するために特定の統計コマンドを 2 回実行する必要があるという問題が発生しました。
前述のように、カーネルとユーザー空間の間のデータ転送は重要ではありませんが、データに従って、ユーザーがいくつかの決定を下す場合があります。このインターフェイス設計に対する私たちの要件は、おそらく 8192 バイトを超える量のデータを転送できる必要があり、コマンドは最小限のカーネル リソース (ロックなど) を使用する必要があり、高速である必要があるということです。
ioctl を使用すると問題を解決できますが、コマンドはデバイスを制御するのではなく、統計情報を収集するためのものであるため、Linux で使用するのに適切なメカニズムであるかどうかはわかりません。現在、3.4 カーネルを使用しています。このバージョンで Netlink がロッシーかどうかはわかりません (以前のバージョンでは、キューがいっぱいになると、ソケットがデータをドロップし始めるなどの問題に遭遇しました)。mmap は別のオプションです。使用するのに最適なインターフェイスを教えてください。