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.

(Más preciso, quiero que sus hilos del núcleo se ejecuten enaislado núcleos Sé que puedo usar la afinidad para unir hilos a núcleos específicos, pero esto no me garantiza que los núcleos serán aislados por otros procesos que se ejecutan en ellos).

Respuestas a la pregunta(3)

Su respuesta a la pregunta