LINUX_VERSION_CODE与KERNEL_VERSION
由于Linux版本的在不断更新,当设备驱动去兼容不同版本的内核时,需要知道当前使用的内核源码版本,以此来调用对应版本的内核API,这两个宏定义在文件/usr/include/linux/version.h#define LINUX_VERSION_CODE 263213#define KERNEL_VERSION(a,b,c) (((a)<<16)+((b)<<8)+(c)
·
由于Linux版本的在不断更新,当设备驱动去兼容不同版本的内核时,需要知道当前使用的内核源码版本,以此来调用对应版本的内核API,这两个宏定义在文件
/usr/include/linux/version.h
#define LINUX_VERSION_CODE 263213
#define KERNEL_VERSION(a,b,c) (((a)<<16)+((b)<<8)+(c))
安装完linux-header之后,在下面这个目录找到了version.h这个文件
/usr/lib/modules/4.4.45-1-MANJARO/build/include/generated/uapi/linux/version.h
使用的Linux系统为MANJARO,内核版本号为4.4.45,对应的LINUX_VERRSION_CODE 为263213,计算方法如下:
首先将4.4.45 转为16进制为 0x04.0x04.0x2D
然后宏 KERNEL_VERSION(0x04,0x04,0x2D)展开之后得到04042D 这个16进制的数字
最后将0x040423 转化为十进制就得到了十进制的263213 即为 LINUX_VERSION_CODE的值263213
可以利用下面的代码根据linux内核版本号的不同调用不同的API函数:
#if LINUX_VERSION_CODE < KERNEL_VERSION(3,10,0)
....//3.10.0 之前的API调用
#else
....//3.10.0 版本之后的API调用
#endif
更多推荐
已为社区贡献1条内容
所有评论(0)