你是對的 - LINUX_VERSION_CODE
是一個宏提供編譯時信息關於您用於編譯模塊的Linux頭文件的版本。宏不能有任何關於模塊實際加載到的內核版本的知識。
的utsname()
功能<linux/utsname.h>
提供一個指向new_utsname
結構,它具有含你在找什麼sysname
,release
和version
成員。
從這些部件中的信息在/proc/version
使用,如圖fs/proc/version.c
:
static int version_proc_show(struct seq_file *m, void *v)
{
seq_printf(m, linux_proc_banner,
utsname()->sysname,
utsname()->release,
utsname()->version);
return 0;
}
linux_proc_banner
是當前定義如下的字符串:
const char linux_proc_banner[] =
"%s version %s"
" (" LINUX_COMPILE_BY "@" LINUX_COMPILE_HOST ")"
" (" LINUX_COMPILER ") %s\n";
在我的系統,讀/proc/version
- 從而讀取這些成員 - 導致獲得以下字符串:
Linux version 4.1.6-1-ARCH ([email protected]) (gcc version 5.2.0 (GCC)) #1 SMP PREEMPT Mon Aug 17 08:52:28 CEST 2015
因此,sysname
是Linux
,release
是4.1.6-1-ARCH
,和version
是#1 SMP PREEMPT Mon Aug 17 08:52:28 CEST 2015
。