カスタマイズされたアプリケーションを作成していて、Linuxカーネルで割り込みハンドラーコードを変更することを許可しています。
割り込みが発生するのを待っているユーザースレッドがあります。その割り込みが発生した場合、私が最初にやりたいことは、そのユーザースレッドを実行することです。
それを機能させる方法はありますか?
ありがとう
カスタマイズされたアプリケーションを作成していて、Linuxカーネルで割り込みハンドラーコードを変更することを許可しています。
割り込みが発生するのを待っているユーザースレッドがあります。その割り込みが発生した場合、私が最初にやりたいことは、そのユーザースレッドを実行することです。
それを機能させる方法はありますか?
ありがとう
キャラクターデバイスを作成します (これはカーネルが行うことであり、デバイスを処理します)。そのデバイスからユーザー スレッドを読み取らせます。読み取る文字がないため、ハングします。
割り込みが発生すると、モジュールからそのデバイスに文字 (または意味のあるメッセージ) を出力します。スレッドが起動し、メッセージを読んで続行します。
ハンドラー スレッドに適切な優先順位を付けて、早期に起動できるようにします。
または、スレッドを待機させるselect
かsleep
、シグナル (カーネル関数kill_proc_info
) を送信すると、スレッドが起動します。スレッドがシグナルを処理することを確認してください。
キャラクタードライバーの作成でやり過ぎをする代わりに、sysfs エントリを作成するだけで十分でした。そのsysfsエントリの読み取り/選択/ポーリングなどのブロッキング呼び出しを実行し、割り込みハンドラーからフィードすることができます。
あなたのために解決する興味深い問題は
等