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-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 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章