2009-07-20 10 views
5

Wie kann die CPU-Affinität eines Prozesses im Kernelmodul festgelegt werden? Im Benutzermodus gibt es einen Syscall sched_setaffinity, aber ich bin auf der Suche nach dem Kernel-Modus entspricht.Festlegen der Prozessaffinität im Kernelmodus

Im Linux-Kernel-Code gibt es auch eine Funktion namens sched_setaffinity. Es wird von der sys_sched_setaffinity-Funktion aufgerufen, die von system_call aufgerufen wird. Von was es scheint, das ist die Funktion, die ich verwenden möchte. Die Tatsache, dass es den gleichen Namen wie der Systemaufruf hat, macht mich jedoch etwas unruhig.

Aber wie wir alle wissen, ist es das Beste, es einfach zu versuchen. Also habe ich das gemacht und mein Modul kompiliert. Wenn ich jedoch versuche, das Modul zu laden, beschwert es sich, dass der Name sched_setaffinity nicht definiert ist.

Irgendwelche Ideen?

Antwort

2

sched_setaffinity wird nicht in Module exportiert. Wenn Sie /usr/src/linux/kernel/sched.c ändern, können Sie veranlassen, dass sched_setaffinity in Module exportiert wird.

long sched_setaffinity(pid_t pid, const struct cpumask *in_mask) 
{ 
... 
} 
+EXPORT_SYMBOL_GPL(sched_setaffinity); 
+0

Das scheint es zu sein. Aufgrund der Art von was ich arbeite, ist es nicht möglich, den Kernel zu ändern. Trotzdem, vielen Dank. –

Verwandte Themen