【发布时间】:2019-03-06 00:46:50
【问题描述】:
sched_setaffinity 上有很多帖子,但几乎没有关于在内核空间中使用它的帖子。
我在内核 4.14.79 上。
我尝试使用用户空间方法调用sched_setaffinity,形式为:
cpu_set_t my_set;
CPU_ZERO(&my_set);
CPU_SET(7, &my_set);
sched_setaffinity(0, sizeof(cpu_set_t), &my_set);
但是在尝试编译内核时,我遇到了错误并意识到这种形式在内核空间中不起作用。
我看到sched_affinity 在sched.h 中定义并且具有以下形式:
extern long sched_setaffinity(pid_t pid, const struct cpumask *new_mask);
但我对如何正确创建具有正确 CPU 编号的 new_mask 参数感到困惑。它的文档不是很有帮助。
有人可以举例说明如何在内核空间中使用此函数将进程设置为特定的 CPU 吗?
【问题讨论】:
标签: linux kernel system-calls