我想迭代内核中的每个进程并修改task_struct
中的一些参数。我想我可以使用for_each_process()
宏来执行此操作。
但是,要安全地执行此操作,我必须确保当前没有执行该进程,并且在我引用其task_struct
之后,我想将其锁定以便其他人无法访问它我正在修改它。
我如何实现这两个目标?
答案 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);
锁定您当前正在处理的任务。