私が書いている/proc
ユーティリティ(すべてのプロセスをループしています)(/fs/proc
のカーネルモジュール)。問題は、私はルートネームスペース内のプロセスだけを見ていることです。私はsched.h
からfor_each_process
マクロを使用しようとしています。なぜfor_each_processはすべてのタスクを表示しないのですか?
シェルにps
と入力すると、プロセスがたくさん表示されますが、for_each_process
ループには表示されません。何がありますか?
注:rcu_read_lock
と関係がありますか?私はrcu_read_lock
を置くことを恐れ、どこに行かなければならないのか分からない。問題は、documentation私はプリエンプティブカーネル(私は)であると言っているようだ、それはrcu_read_lock
の中で眠ることは違法です。私はdown_read(mmap_sem)
に電話する必要があります。だから私はrcu_read_lock
を使うことができないのですか?
これは許可の対象になる可能性がありますか? su/sudoでユーティリティを実行するとどうなりますか?私はこれがCプログラムだと思っていますか? –
この例も同様の結果を示しているようです:http://tuxthink.blogspot.com/2011/03/using-foreachprocess-in-proc-entry.html –
私の最初を無視し、これがカーネルモジュールであることを認識しませんでした。 –