gpt4 book ai didi

c - 为什么 for_each_process 不显示每个任务?

转载 作者:IT王子 更新时间:2023-10-29 01:10:35 27 4
gpt4 key购买 nike

我正在尝试遍历我正在编写的 /proc 实用程序中的每个进程(/fs/proc< 中的内核模块)。问题是,我只看到根命名空间中的进程。我正在尝试使用 sched.h 中的宏 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()

最佳答案

它应该向您显示所有过程。我写过这样的代码。

struct task_struct *task;

for_each_process(p) {
printk("Task %s (pid = %d)\n",p->comm, task_pid_nr(p));
}

这是打印所有过程。我怀疑你的 proc_read 函数。你能把你的 proc_read 函数粘贴到这里吗?

关于c - 为什么 for_each_process 不显示每个任务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9652111/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com