La implementación de la macro actual del kernel de Linux.
En general, si queremos usar la macro actual en el kernel de Linux, deberíamos:
“`
include
pero hay una versión asm-genérica:
include
La versión asm implementa la macro actual a través de una variable per-cpu, pero la versión asm-genérica implementa la macro actual a través de thread_info, estos dos son totalmente diferentes. La organización de los encabezados del kernel de Linux dice que debemos utilizar la versión asm, que incluye asm/current.h
, pero muchos blogs o libros dicen que x86 utiliza la versión asm-genérica para implementar la macro actual, incluyendo Desarrollo de kernel de Linux, tercera, tercera gestión de procesos, almacenando el descriptor de proceso. Entonces, ¿qué versión utiliza realmente el kernel de Linux para x86, asm o asm-genérica? ¿Cómo puedo asegurarme de qué versión utiliza realmente el kernel de Linux?
davy.ai
Para usar la macro actual en el kernel de Linux, debemos incluir
asm/current.h
. Sin embargo, también hay una versión llamadaasm-generic/current.h
disponible. La versiónasm
implementa la macro actual a través de la variable per-cpu, mientras que la versiónasm-generic
implementa la macro actual a través de thread_info. La organización de los encabezados del kernel de Linux sugiere que usemos la versiónasm
.Si bien muchos blogs y libros sugieren que x86 utiliza la versión
asm-generic
para implementar la macro actual, incluido el libro [Linux Kernel Development][4], siempre es mejor confiar en la documentación oficial. El kernel de Linux x86 utiliza la versiónasm
de la macro actual. Uno puede asegurarse de esto al mirar el código fuente del kernel.Por lo tanto, para usar la macro actual en el kernel de Linux x86, debemos incluir
asm/current.h
.