我正在嘗試循環遍歷我編寫的一個/proc
實用程序中的每個進程(/fs/proc
中的一個內核模塊)。問題是,我只看到根名稱空間中的進程。我正嘗試使用sched.h
中的宏for_each_process
。爲什麼沒有for_each_process顯示每個任務?
我可以在shell中輸入ps
,看到很多進程,但是我的for_each_process
循環沒有看到它們。是什麼賦予了?
說明:我想知道它是否與rcu_read_lock
有關?我害怕把一個rcu_read_lock
,我不知道它應該去哪裏。麻煩的是,我讀的documentation似乎說在一個可搶佔的內核(我的)中,在rcu_read_lock
內部睡眠是非法的。我需要撥打down_read(mmap_sem)
,我恐怕會睡覺。那意味着我不能使用rcu_read_lock
?
我的直覺是,這可能是一個許可的事情?如果使用su/sudo運行實用程序,會發生什麼情況?我認爲這是一個C程序? – 2012-03-11 03:18:10
也似乎這個例子是顯示類似的結果:http://tuxthink.blogspot.com/2011/03/using-foreachprocess-in-proc-entry.html – 2012-03-11 03:23:21
忽略我的第一個,沒有意識到這是一個內核模塊。 – 2012-03-11 03:38:10