1

ユーザープロセスが何らかの形でプリエンプトされたかどうかを特定する必要があります.preempt.hとsched.cにフックがあり、プロセスが再スケジュールまたはプリエンプトされるたびにsched_in関数とsched_out関数を呼び出すことができるpreempt_notifiersを定義できることを理解しています.

しかし、通知機能をユーザー空間の特定のプロセスまたは pid にアタッチし、この特定のプロセスがプリエンプトされたかどうかを何らかの方法でログに記録する方法をまだ見つけることができません。そのためにはモジュールを作成する必要があると思いますが、pid を特定のノーティファイアーにアタッチするにはどうすればよいでしょうか?

4

2 に答える 2

1

通知機能は本質的にプロセスごとです。登録すると、現在のプロセスに登録されます。のコードを参照してくださいpreempt_notifier_register()。notifer が にアタッチされていcurrent->preempt_notifiersます。

于 2012-08-14T07:09:40.550 に答える
0

疑似ファイルには、あなたが求めている情報と思われる/proc/<pid>/status行が含まれています。nonvoluntary_ctxt_switches:

于 2012-08-15T07:25:22.367 に答える