0

「コールバック関数を呼び出すために、カーネル空間からユーザー空間アプリケーションに通知を送信する必要がある」USB ACM ドライバーで作業しています。コードでカーネルからユーザー インターフェイスへの使用についてはあまり知りません。このシナリオでsysfsがどれだけ役立つか。コードに実装するアイデアを得るために、sysfs を使用するサンプル コードを送信してください。どこにも見つかりませんでした。また、カーネルからユーザー空間への通知を実現する簡単な方法を教えてください。前もって感謝します。

4

2 に答える 2

1

私の提案は、ユーザー空間がアクセスできるカーネルドライバーへの sysfs インターフェイスを作成することです。正しいプロパティで作成された場合、各 sysfs 属性は、ユーザー空間からファイルのように読み取ることができます。次に、ユーザー空間からポーリング機能を使用して、そのファイルに対するアクションをポーリングできます。カーネル空間からこのアクションをトリガーするsysfs_notifyには、属性で関数を使用できます。これにより、ユーザー空間コードが起動します。これが私がそれを行う方法です

カーネル 1. Kobject を作成するか、以前の kobject に属性をアタッチします 2. ユーザー空間にシグナルを送る場合は、kobject と属性に対して sysfs_notify を呼び出します

ユーザー空間

  1. sysfs_notify の待機中にブロックする新しいスレッドを作成します
  2. このスレッドから sysfs 属性を開きます
  3. 属性をポーリングします。カーネルから sysfs_notify が呼び出されると、ポーリングのブロックが解除されます
  4. イベント処理関数を呼び出します
于 2015-08-04T20:01:58.747 に答える