如何从Linux内核模式设置进程的亲和性?

时间:2009-07-20 00:28:31

标签: linux linux-kernel kernel kernel-module affinity

如何在内核模块中设置进程的CPU亲和性?在用户模式下有一个系统调用sched_setaffinity,但我正在寻找等效的内核模式。

在Linux内核代码中,还有一个名为sched_setaffinity的函数。它是由sys_sched_setaffinity函数调用的system_call函数调用的。从它看来,这是我想要使用的功能。它与系统调用同名的事实让我有点不安。

但众所周知,最好的办法就是尝试一下。所以我做了,我的模块编译完毕。但是,当我尝试加载模块时,它会抱怨名称sched_setaffinity未定义。

1 个答案:

答案 0 :(得分:2)

sched_setaffinity未导出到模块。

如果您修改/usr/src/linux/kernel/sched.c,则可以导致sched_setaffinity导出到模块。

 long sched_setaffinity(pid_t pid, const struct cpumask *in_mask)
 {
...
 }
+EXPORT_SYMBOL_GPL(sched_setaffinity);