2011-12-18 40 views
2

カーネルの各プロセスを繰り返し実行し、いくつかのパラメータをtask_structに変更します。私はfor_each_process()マクロを使うことができると思います。Linuxカーネルでのfor_each_processマクロの使用

しかし、安全に行うために、私はプロセスが現在実行されていないことを保証しなければなりません。また、task_structへの参照を取得した後、私はそれをロックして、それ。

どのようにこれらの2つの目標を達成できますか?

+0

大丈夫、for_each_process()はrcuロックで保護されていると思います。だから、少なくとも私はそれを使用している間誰かがそのメモリを解放しないことが保証されています。今私はそれを変更しながらそれを保護する方法についての質問が残っています。 – contemplatingzombie

+0

このサイトの視聴者は主にプログラマーではなくユーザーと管理者であるため、あなたの質問は[so]の方がうまくいくと思います。そこには再投稿しないでください。モデレータにあなたの質問を移行するよう依頼しました。 – Gilles

答えて

0

あなたは使用することができます。

int flags; 
smp_wmb(); 
raw_spin_lock_irqsave(&task->pi_lock, flags); 
do your stuff 
raw_spin_unlock_irqrestore(&task->pi_lock, flags); 

あなたが現在処理しているタスクをロックします。

関連する問題