0

Linuxに移植したいWindowsデバイスドライバーがあります。

ユーザースペースアプリケーションは、多くの場合、ドライバーイベントを待機する必要があります。Windowsで使用するメカニズムは次のとおりです。

  1. アプリケーションはWaitHandleを作成します
  2. アプリケーションは、ioctlを介してこのWaitHandleをドライバーに渡します
  3. ドライバーは、ObReferenceObjectByHandleを使用してこのハンドルにアクセスし、KeSetEventで設定できます。

私がこれで好きなもの:

  • WaitHandleはどこからでも取得できます(AutoResetまたはManualReset、.Net WaitHandleなど)
  • プロセスはioctlをスリープ状態にする必要はありませんが、通常のWaitForSingleObjectを呼び出すことができます。

Linuxドライバーで同じアーキテクチャを維持したい。

Linuxで同じ動作をする方法を知っている人はいますか?

4

1 に答える 1

1

簡単なアイデアの1つは、読み取りをブロックするキャラクターデバイスを作成することです。ユーザーアプリケーションはデバイスから読み取ります。そのような読み取りは、イベントが発生するまでブロックされます。

編集:

もう1つのアイデアは、ハンドラーがユーザースペース待機ハンドル(おそらくfutex)を設定するユーザースペースアプリケーションにシグナルを送信することです。

于 2012-08-24T08:14:58.430 に答える