【问题标题】:How to set the affinity of a process from a Linux kernel mode?如何从 Linux 内核模式设置进程的亲和性?
【发布时间】:2009-07-20 00:28:31
【问题描述】:

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

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

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

【问题讨论】:

  • 不确定是否有任何区别,但是您想设置用户态进程的亲和性还是 kthread 的亲和性?

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


【解决方案1】:

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

【讨论】:

  • 好像是这样。由于我工作的性质,修改内核是不可行的。不过,非常感谢。
猜你喜欢
  • 2013-08-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多