在Linux内核中使用for_each_process宏

时间:2011-12-18 02:27:08

标签: linux-kernel

我想迭代内核中的每个进程并修改task_struct中的一些参数。我想我可以使用for_each_process()宏来执行此操作。

但是,要安全地执行此操作,我必须确保当前没有执行该进程,并且在我引用其task_struct之后,我想将其锁定以便其他人无法访问它我正在修改它。

我如何实现这两个目标?

1 个答案:

答案 0 :(得分:0)

您可以使用:

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

锁定您当前正在处理的任务。