9

ユーザーが Linux ユーザー空間でコマンドを使用するように要求するたびに、カスタム ハードウェアの統計情報が表示されるようになりました。この実装は、現在 PROC インターフェイスを使用しています。統計情報の追加を開始すると、PROC インターフェイスが 1 ページに制限されていたため、データ全体を取得するために特定の統計コマンドを 2 回実行する必要があるという問題が発生しました。

前述のように、カーネルとユーザー空間の間のデータ転送は重要ではありませんが、データに従って、ユーザーがいくつかの決定を下す場合があります。このインターフェイス設計に対する私たちの要件は、おそらく 8192 バイトを超える量のデータを転送できる必要があり、コマンドは最小限のカーネル リソース (ロックなど) を使用する必要があり、高速である必要があるということです。

ioctl を使用すると問題を解決できますが、コマンドはデバイスを制御するのではなく、統計情報を収集するためのものであるため、Linux で使用するのに適切なメカニズムであるかどうかはわかりません。現在、3.4 カーネルを使用しています。このバージョンで Netlink がロッシーかどうかはわかりません (以前のバージョンでは、キューがいっぱいになると、ソケットがデータをドロップし始めるなどの問題に遭遇しました)。mmap は別のオプションです。使用するのに最適なインターフェイスを教えてください。

4

2 に答える 2

1

(IOR、IOW、または IORW ではなく) ioctl IO 呼び出しを実行できます。Ioctl は、情報収集に非常に役立ちます。このように、さまざまなサイズのバッファーまたは構造体を渡してデータを入力できるという点で、柔軟性が非常に高くなります。

于 2012-09-14T19:12:41.987 に答える