Bog*_*ogi 6 kernel-module linux-kernel kernel-mode
如何从linux内核模块代码(内核模式)中获取有关运行哪个内核版本的运行时信息?
Dan*_*oni 18
按照惯例,Linux内核模块加载机制不允许加载未针对正在运行的内核编译的模块,因此您所指的"运行内核"很可能在内核模块编译时已知.
对于检索版本字符串常量,旧版本要求您包括<linux/version.h>
,其他版本<linux/utsrelease.h>
和更新版本<generated/utsrelease.h>
.如果您真的想在运行时获取更多信息,那么utsname()
function from linux/utsname.h
是最标准的运行时接口.
虚拟/proc/version
procfs节点的实现使用utsname()->release
.
如果要在编译时基于内核版本来调整代码,可以使用预处理器块,例如:
#if LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,16)
...
#else
...
#endif
Run Code Online (Sandbox Code Playgroud)
它允许您与主要/次要版本进行比较.