データ バッファーの読み取り準備が整ったときにハードウェア割り込みを送信する PCIe デバイスがあります。これに対する最善のアプローチはシグナルを使用することだと思いますが、その方法は完全にはわかりません。私がする必要があると私が信じていることは次のとおりです。
- ドライバーが信号の送信先を認識できるように、ユーザー空間アプリケーションの PID を保存します。
- PCIe デバイス ドライバーの割り込みハンドラーで、ユーザー空間アプリケーションにシグナルを送信します。
- ユーザー空間アプリケーションで、シグナルを処理するためのシグナル ハンドラー関数を実装します。
これらのいずれかを行う方法がわかりません。ユーザー空間アプリケーションの PID を保存する方法/場所は? ドライバーの割り込みハンドラーからその特定の PID に信号を送信するにはどうすればよいですか (kill コマンドを使用する必要があると思いますが、PID を取得する構文に興味があります)。PID を保存した後、ユーザー空間アプリケーションに信号を待機させるにはどうすればよいですか? PID を保存した後もユーザー空間アプリケーションを実行し続け、シグナルが受信されたときにシグナル ハンドラー関数を実行し、シグナルが到着する前の場所で実行を継続することは可能ですか? (ISR の仕組みに似ています)