Aislar el módulo del núcleo a un núcleo específico utilizando Cpuset
Desde el espacio de usuario podemos usarcpuset en realidadaislar un núcleo específico en nuestro sistema y ejecute solo un proceso específico para ese núcleo.
Estoy tratando de hacer lo mismo con un módulo de kernel. Entonces, quiero que el módulo se ejecute en un núcleo aislado. En otras palabras:Como usocpuset
's desde el interior de un módulo de kernel? *
Utilizandolinux / cpuset.h en mi kernel el módulo no funciona. Entonces, tengo un módulo como este:
#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
...
Al intentar cargar este módulo me sale (endmesg
) el siguiente mensajecpusets is enabled!
. Pero tambien recibo el mensajeUnknown symbol cpu_init (err 0)
.
Del mismo modo, intenté usarsched_setaffinity
delinux/sched.h
para mover todo el proceso en ejecución, ses a un núcleo específico y luego ejecuta mi módulo a un núcleo aislado. Recibí el mismo mensaje de error:Unknown symbol sched_setaffinity (err 0)
. Supongo que obtuve los "símbolos desconocidos" porque esas funciones no tienenEXPORT_SYMBOL
en el kernel Así que fui e intenté llamar alsys_sched_setaffinity
llamada al sistema (basado en estopregunta) pero nuevamente recibí este mensaje:Unknown symbol sys_sched_setaffinity (err 0)
!
Además, no estoy buscando una solución que useisolcpus
, que se establece durante el arranque. Me gustaría simplemente cargar el módulo y luego ocurrir el aislamiento.