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

标签 linux linux-kernel kernel kernel-module affinity

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

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

但众所周知,最好的办法就是尝试一下。所以我做到了,并且我的模块已编译。但是,当我尝试加载模块时,它会提示名称 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);

关于linux - 如何从 Linux 内核模式设置进程的亲和性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1151285/

相关文章:

java - 为什么同一个 JAVA 程序在 Windows 和 Linux 等不同平台上运行不同?

c - 为什么 malloc 真的是不确定的? (Linux/Unix)

交叉内存连接。如何获取子进程到父进程的远程地址

memory-management - alloc_pages() 和 get_free_pages() 返回值的区别

windows - 如何从Windows内核调用usermode?

c - strstr 在内核空间中无法正常工作

linux-kernel - printk 不适用于内核调试

c++ - 如何调试多线程 C++ 程序的哪个部分花费了过多的时间?

linux - 如何指定链接时要使用的库版本?

linux - mlock() 如何与休眠一起工作?