Изоляция модуля ядра от конкретного ядра с помощью процессора

Из пользовательского пространства мы можем использоватьcpuset на самом делеизолировать конкретное ядро ​​в нашей системе и выполнить только один конкретный процесс для этого ядра.

Я пытаюсь сделать то же самое с модулем ядра. Поэтому я хочу, чтобы модуль выполнялся в изолированном ядре. Другими словами:Как я используюcpusetвнутри модуля ядра? *

С помощьюLinux / cpuset.h в моем модуле ядра не работает. Итак, у меня есть такой модуль:

#include <linux/module.h>
#include <linux/cpuset.h>

...
#ifdef CONFIG_CPUSETS
    printk(KERN_INFO, "cpusets is enabled!");
#endif
cpuset_init(); // this function is declared in cpuset.h
...

При попытке загрузить этот модуль я получаю (вdmesg) следующее сообщениеcpusets is enabled!, Но я также получаю сообщениеUnknown symbol cpu_init (err 0).

Точно так же я пытался использоватьsched_setaffinity отlinux/sched.h для того, чтобы переместить все запущенные процессы, ses на конкретное ядро, а затем запустить мой модуль на изолированное ядро. Я получил то же сообщение об ошибке:Unknown symbol sched_setaffinity (err 0), Я думаю, что я получил "неизвестные символы", потому что эти функции не имеютEXPORT_SYMBOL в ядре. Поэтому я пошел и попытался позвонитьsys_sched_setaffinity системный вызов (основываясь на этомвопрос) но опять получил это сообщение:Unknown symbol sys_sched_setaffinity (err 0)!

Кроме того, я не ищу решение, которое используетisolcpus, который устанавливается при загрузке. Я хотел бы просто загрузить модуль, а затем произойти изоляция.

(Точнее, я хочу, чтобы его потоки ядра выполнялись визолированный сердечники. Я знаю, что могу использовать привязку для привязки потоков к конкретным ядрам, но это не гарантирует мне, что ядра будут изолированы другими процессами, работающими на них.)

Ответы на вопрос(3)

Ваш ответ на вопрос