2009-07-20 23 views
5

Comment l'affinité CPU d'un processus peut-elle être définie dans le module noyau? En mode utilisateur, il y a un appel système sched_setaffinity, mais je cherche l'équivalent en mode noyau.Définition de l'affinité de processus en mode noyau

Dans le code du noyau Linux, il existe également une fonction appelée sched_setaffinity. Il est appelé à partir de la fonction sys_sched_setaffinity qui est appelée par system_call. De ce qu'il semble, c'est la fonction que je veux utiliser. Le fait qu'il porte le même nom que l'appel du système me rend un peu mal à l'aise, cependant. Mais comme nous le savons tous, la meilleure chose à faire est de simplement essayer. Donc je l'ai fait, et mon module compilé. Cependant, lorsque j'essaie de charger le module, il se plaint que le nom sched_setaffinity est indéfini.

Des idées?

Répondre

2

sched_setaffinity n'est pas exporté vers des modules. Si vous modifiez /usr/src/linux/kernel/sched.c, sched_setaffinity peut être exporté vers des modules.

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

Cela semble être le cas. En raison de la nature de ce sur quoi je travaille, il n'est pas possible de modifier le noyau. Encore, merci beaucoup. –