2009-07-20 10 views
5

Come è possibile impostare l'affinità della CPU di un processo nel modulo del kernel? In modalità utente c'è un syscall sched_setaffinity, ma sto cercando l'equivalente in modalità kernel.Impostazione affinità processo in modalità kernel

Nel codice del kernel Linux, esiste anche una funzione denominata sched_setaffinity. Viene chiamato dalla funzione sys_sched_setaffinity chiamata da system_call. Da quello che sembra, questa è la funzione che voglio usare. Il fatto che abbia lo stesso nome della chiamata di sistema mi rende un po 'a disagio, però.

Ma come tutti sappiamo, la cosa migliore da fare è semplicemente provarlo. Così ho fatto e il mio modulo è stato compilato. Tuttavia, quando provo a caricare il modulo, si lamenta che il nome sched_setaffinity non è definito.

Qualche idea?

risposta

2

sched_setaffinity non viene esportato in moduli.

Se si modifica /usr/src/linux/kernel/sched.c, è possibile esportare sched_setaffinity in moduli.

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

Sembra che sia così. A causa della natura di ciò su cui sto lavorando, non è possibile modificare il kernel. Comunque, grazie molte. –