私はLinuxスケジューラで何かを書いています。割り込みが来る前にどのプロセスが実行されていたのかを知る必要があります。割り込みハンドラ中にcurrent-> pidを実行すると、中断したプロセスのPIDを取得できますか?割り込み中にcurrent-> pidを取得する
2
A
答えて
3
current->pid
が存在し、中断されたプロセス(アイドル状態のスレッドなど)があります。
Linuxスケジューラの中に書いているのなら、非常に注意が必要です。 current
は、スケジューラが実行する新しいプロセスを選択するときにスケジューラによって変更されるため、その値は正確にいつ読み込むかによって異なります。
0
現在のはプロセスコンテキスト外で有効とは思われません。スケジューラで作業している場合、実行中のタスクへのポインタを格納する場所を把握できます。 struct cfs_rq。
関連する問題
- 1. タスクレットのPID取得
- 2. jquery割り込みJavascriptの読み込み中にjquery-1.7.1.min.js
- 3. 割り込み中に割り込みを無効にする必要はありますか?
- 4. Qtの中断割り込み?
- 5. WCF RESTの着信要求を読み取る中断割り込み
- 6. 同期データ取得のためのハードウェア割り込み
- 7. バックグラウンドプロセスのpidを取得する
- 8. 再割り当て親PID
- 9. libusb割り込み転送
- 10. 他の割り込みベクタ内の割り込みベクタを呼び出す
- 11. jQuery - 割り込みアニメーション?
- 12. Arduinoシリアル割り込み
- 13. Jquery Ajaxデータを取得中に画像を読み込む
- 14. using drawnow:uicontrolコールバックを評価中の割り込み
- 15. COM1でcomunnicateするpidを取得
- 16. Linuxで作業中にPythonでCtrl-Cキーボード割り込みをシミュレートする
- 17. python gtkによるキーボード割り込み?
- 18. 実行中のfirefoxプロセスのPIDを取得
- 19. タスク並列ライブラリスレッドの中止/割り込み
- 20. イメージアップロード - ローカルホスト割り込み
- 21. タスクゲート、割り込みゲート、コールゲート
- 22. オペレーティングシステムの割り込み
- 23. 割り込みノコギリSAXパーサ?
- 24. Hooking Int 09h割り込み
- 25. 割り込みハンドラのコンテキストスイッチ
- 26. 割り込みfadeTo関数
- 27. x86:割り込みハンドラループ
- 28. オペレーティングシステムの割り込みハンドラ
- 29. ハード割り込みとsoftirq
- 30. Linuxの割り込みレイテンシー
* current *は、%espの下位ビットをマスクします。そして、Linuxに割り込みスタックと呼ばれるものがあります。割り込みがあなたを他のスタックに切り替え、%espをマスクした場合、有効な構造体task_infoの近くにはどこもありません。 IOW task_infoはスタックの一部であり、割り込みスタック上には見つかりません。私は何かが欠けている? – moorray
@mooray、 'current'が動作します。 'current'はまず' thread_info'(x86では%espをマスキングして)を取得し、そこで 'task_struct'へのポインタを見つけます。割り込みスタックに切り替えると、 'do_IRQ'はプロセスのカーネルスタックに従ってこのポインタを設定します。 – ugoren
ああ...ありがとうございます;) – moorray