私はLinuxスケジューラで何かを書いています。割り込みが来る前にどのプロセスが実行されていたのかを知る必要があります。割り込みハンドラ中にcurrent-> pidを実行すると、中断したプロセスのPIDを取得できますか?割り込み中にcurrent-> pidを取得する
2
A
答えて
3
current->pid
が存在し、中断されたプロセス(アイドル状態のスレッドなど)があります。
Linuxスケジューラの中に書いているのなら、非常に注意が必要です。 current
は、スケジューラが実行する新しいプロセスを選択するときにスケジューラによって変更されるため、その値は正確にいつ読み込むかによって異なります。
0
現在のはプロセスコンテキスト外で有効とは思われません。スケジューラで作業している場合、実行中のタスクへのポインタを格納する場所を把握できます。 struct cfs_rq。
関連する問題
- 1. 割り込みフラグと割り込み保留中のビットstm32
- 2. タスクレットのPID取得
- 3. jquery割り込みJavascriptの読み込み中にjquery-1.7.1.min.js
- 4. 割り込み中に割り込みを無効にする必要はありますか?
- 5. Qtの中断割り込み?
- 6. WCF RESTの着信要求を読み取る中断割り込み
- 7. Arduinoでの割り込み
- 8. アセンブリのBIOS割り込みでシステム時間を取得
- 9. ウォーターフォール中に割り込みを避けるためのダイアログ
- 10. null値を取得するjsonデータを読み込み中
- 11. 同期データ取得のためのハードウェア割り込み
- 12. バックグラウンドプロセスのpidを取得する
- 13. 実行中のバットスクリプトからPIDを取得する
- 14. SysTick割り込みは保留中ですが、実行されません。デバッグ割り込みマスクの問題?
- 15. 割り込みsuper.onCreate()
- 16. 再割り当て親PID
- 17. TRAP、ソフトウェア割り込みとハードウェア割り込みの違いは?
- 18. getTimeで動作する割り込み/割り込み関数の実行
- 19. クラス内の割り込み
- 20. サーバーからデータを取得中に読み込み中の画面を読み込む
- 21. libusb割り込み転送
- 22. laravelで熱心な読み込み中に特定のフィールドを取得する
- 23. 他の割り込みベクタ内の割り込みベクタを呼び出す
- 24. PIDを取得中にpcloseでランダムにセグメント化エラーが発生する
- 25. ソケットfdのPIDを取得
- 26. Yoctoのgpio割り込みにスクリプトを割り当てます。
- 27. Arduinoアナログピン割り込み
- 28. jQuery - 割り込みアニメーション?
- 29. Arduinoシリアル割り込み
- 30. COM1でcomunnicateするpidを取得
* current *は、%espの下位ビットをマスクします。そして、Linuxに割り込みスタックと呼ばれるものがあります。割り込みがあなたを他のスタックに切り替え、%espをマスクした場合、有効な構造体task_infoの近くにはどこもありません。 IOW task_infoはスタックの一部であり、割り込みスタック上には見つかりません。私は何かが欠けている? – moorray
@mooray、 'current'が動作します。 'current'はまず' thread_info'(x86では%espをマスキングして)を取得し、そこで 'task_struct'へのポインタを見つけます。割り込みスタックに切り替えると、 'do_IRQ'はプロセスのカーネルスタックに従ってこのポインタを設定します。 – ugoren
ああ...ありがとうございます;) – moorray