Isolate Kernel Module auf einen bestimmten Kern mit Cpuset

Aus dem User-Space können wir @ verwend cpuset um eigentlichisoliere einen bestimmten Kern in unserem System und führen Sie nur einen bestimmten Prozess für diesen Kern aus.

Ich versuche dasselbe mit einem Kernelmodul zu machen. Ich möchte, dass das Modul in einem isolierten Kern ausgeführt wird. Mit anderen Worten:Wie verwende ichcpuset kommt aus einem Kernel-Modul? *

Using linux / cpuset.h in meinem Kernelmodul funktioniert nicht. Also, ich habe ein Modul wie dieses:

#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
...

Wenn ich versuche, dieses Modul zu laden, erhalte ich (indmesg) die folgende Meldungcpusets is enabled!. Ich erhalte aber auch die NachrichtUnknown symbol cpu_init (err 0).

Ebenso habe ich versucht mitsched_setaffinity vonlinux/sched.h Um alle laufenden Prozesse zu verschieben, ses auf einen bestimmten Kern und dann mein Modul auf einen isolierten Kern ausführen. Ich habe die gleiche Fehlermeldung erhalten:Unknown symbol sched_setaffinity (err 0). Ich glaube, ich habe die "unbekannten Symbole" erhalten, weil diese Funktionen kein @ habeEXPORT_SYMBOL im Kernel. Also ging ich und versuchte das @ anzurufsys_sched_setaffinity system call (basierend aufFrag) habe aber wieder diese Meldung bekommen:Unknown symbol sys_sched_setaffinity (err 0)!

Außerdem suche ich keine Lösung, die @ verwendisolcpus, das beim Booten eingestellt wird. Ich möchte nur das Modul laden und danach die isolationo auftreten.

(Genauer gesagt, ich möchte, dass die Kernel-Threads in @ ausgeführt werdeisolier Kerne. Ich weiß, dass ich Affinität verwenden kann, um Threads an bestimmte Kerne zu binden, aber dies garantiert mir nicht, dass die Kerne durch andere auf ihnen ausgeführte Prozesse isoliert werden.)

Antworten auf die Frage(6)

Ihre Antwort auf die Frage