LINUX_VERSION_CODE 与 KERNEL_VERSION

Como la versión de Linux se actualiza constantemente, cuando el controlador de dispositivo es compatible con diferentes versiones del kernel, es necesario conocer la versión actual del código fuente del kernel en uso para llamar a la versión correspondiente de la API del kernel. el archivo

/usr/include/linux/version.h

#define LINUX_VERSION_CODE 263213
#define KERNEL_VERSION(a,b,c) (((a)<<16)+((b)<<8)+(c))

Después de instalar linux-header, el archivo version.h se encontró en el siguiente directorio

/usr/lib/modules/4.4.45-1-MANJARO/build/include/generated/uapi/linux/version.h

El sistema Linux utilizado es MANJARO, el número de versión del kernel es 4.4.45 y el LINUX_VERRSION_CODE correspondiente es 263213. El método de cálculo es el siguiente:

Primero convierta 4.4.45 a hexadecimal a 0x04.0x04.0x2D,
y luego expanda la macro KERNEL_VERSION (0x04, 0x04, 0x2D) para obtener el número hexadecimal
04042D. Finalmente, convierta 0x040423 a decimal para obtener el decimal 263213, que es el valor LINODUX_VERSION_C. 263213

Puede utilizar el siguiente código para llamar a diferentes funciones de API de acuerdo con el número de versión del kernel de Linux:

#if LINUX_VERSION_CODE < KERNEL_VERSION(3,10,0)
....//3.10.0 之前的API调用
#else 
....//3.10.0 版本之后的API调用
#endif 

Supongo que te gusta

Origin blog.csdn.net/sun172270102/article/details/107166784
Recomendado
Clasificación