当前位置:   article > 正文

linux 内核 LINUX_VERSION_CODE 和 KERNEL_VERSION 宏定义 版本信息_linux driver linux_version_cod

linux driver linux_version_cod

由于Linux版本的在不断更新,当设备驱动去兼容不同版本的内核时,需要知道当前使用的内核源码版本,以此来调用对应版本的内核API,这两个宏定义在文件

  1. /usr/include/linux/version.h
  2. #define LINUX_VERSION_CODE 263213
  3. #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函数:
  1. #if LINUX_VERSION_CODE < KERNEL_VERSION(3,10,0)
  2. ....//3.10.0 之前的API调用
  3. #else
  4. ....//3.10.0 版本之后的API调用
  5. #endif

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/239874
推荐阅读
相关标签
  

闽ICP备14008679号