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.