2009-07-20 11 views
5

W jaki sposób można ustawić powinowactwo procesowe w module jądra? W trybie użytkownika jest syscall sched_setaffinity, ale szukam równoważnika trybu jądra.Ustawianie powinowactwa procesu w trybie jądra

W kodzie jądra Linuksa dostępna jest również funkcja o nazwie sched_setaffinity. Jest wywoływana z funkcji sys_sched_setaffinity, która jest wywoływana przez system_call. Z tego, co się wydaje, jest to funkcja, której chcę użyć. Fakt, że ma tę samą nazwę, co wywołanie systemowe, sprawia jednak, że czuję się trochę nieswojo.

Ale jak wszyscy wiemy, najlepiej jest po prostu spróbować. Tak zrobiłem i mój moduł został skompilowany. Jednak gdy próbuję załadować moduł, narzeka, że ​​nazwa sched_setaffinity jest niezdefiniowana.

Wszelkie pomysły?

Odpowiedz

2

sched_setaffinity nie jest eksportowany do modułów.

Po zmodyfikowaniu /usr/src/linux/kernel/sched.c można spowodować eksportowanie sched_setaffinity do modułów.

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

To wydaje się być to. Ze względu na naturę tego, nad czym pracuję, nie można modyfikować jądra. Mimo to, dziękuję bardzo. –

Powiązane problemy