在内核模式下设置进程关联

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

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

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

有任何想法吗?

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);