「コールバック関数を呼び出すために、カーネル空間からユーザー空間アプリケーションに通知を送信する必要がある」USB ACM ドライバーで作業しています。コードでカーネルからユーザー インターフェイスへの使用についてはあまり知りません。このシナリオでsysfsがどれだけ役立つか。コードに実装するアイデアを得るために、sysfs を使用するサンプル コードを送信してください。どこにも見つかりませんでした。また、カーネルからユーザー空間への通知を実現する簡単な方法を教えてください。前もって感謝します。
質問する
2865 次
2 に答える
1
私の提案は、ユーザー空間がアクセスできるカーネルドライバーへの sysfs インターフェイスを作成することです。正しいプロパティで作成された場合、各 sysfs 属性は、ユーザー空間からファイルのように読み取ることができます。次に、ユーザー空間からポーリング機能を使用して、そのファイルに対するアクションをポーリングできます。カーネル空間からこのアクションをトリガーするsysfs_notify
には、属性で関数を使用できます。これにより、ユーザー空間コードが起動します。これが私がそれを行う方法です
カーネル 1. Kobject を作成するか、以前の kobject に属性をアタッチします 2. ユーザー空間にシグナルを送る場合は、kobject と属性に対して sysfs_notify を呼び出します
ユーザー空間
- sysfs_notify の待機中にブロックする新しいスレッドを作成します
- このスレッドから sysfs 属性を開きます
- 属性をポーリングします。カーネルから sysfs_notify が呼び出されると、ポーリングのブロックが解除されます
- イベント処理関数を呼び出します
于 2015-08-04T20:01:58.747 に答える