Я пытаюсь перебрать все процессы в /proc
утилите, которую я пишу (модуль ядра в /fs/proc
). Проблема в том, что я вижу только процессы в корневом пространстве имен. Я пытаюсь использовать макрос for_each_process
из sched.h
.
Я могу набрать ps
в оболочке и увидеть множество процессов, но мой цикл for_each_process
их не видит. Что дает?
Примечание: Интересно, это как-то связано с rcu_read_lock
? Я боюсь поставить rcu_read_lock
, и я не знаю, куда это должно пойти. Проблема в том, что документация , которую я прочитал, кажется, говорит, что в вытесняемом ядре (моё есть) запрещено спать внутри rcu_read_lock
. Мне нужно позвонить down_read(mmap_sem)
, который, боюсь, будет спать. Значит, я не могу использовать rcu_read_lock
?