По соглашению, механизм загрузки модулей ядра Linux не позволяет загружать модули, которые не были скомпилированы с работающим ядром, поэтому «работающее ядро», на которое вы ссылаетесь, скорее всего, уже известно во время компиляции модулей ядра.
Для получения строковой константы версии, более старые версии требуют, чтобы вы включили <linux/version.h>
, другие <linux/utsrelease.h>
и более новые <generated/utsrelease.h>
.Если вы действительно хотите получить больше информации во время выполнения, тогда функция utsname()
из linux/utsname.h
является наиболее стандартным интерфейсом времени выполнения.
Реализация виртуального узла /proc/version
procfs использует utsname()->release
.
Если вы хотите обработать код на основе версии ядра во время компиляции, вы можете использовать блок препроцессора, такой как:
#if LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,16)
...
#else
...
#endif
Это позволяет сравнивать мажор / минор.версии.