2013-11-21 103 views
1

在Linux內核模塊中,使用宏KERNEL_VERSION,我如何使用 create_proc_entryproc_create如何使用proc_create或create_proc_entry取決於Linux內核版本

究竟在哪個內核版本中,接口被更改了?

我看到在內核版本3.9,文件proc_fs.h中,兩個API都出現在 不同的#ifdef之間。基本上我想檢查內核版本,並根據該 調用正確的API。

回答

1
#include <linux/version.h> /* For LINUX_VERSION_CODE */ 

#if (LINUX_VERSION_CODE <= KERNEL_VERSION(3,9,0)) 
    /* 
    * Do This 
    */ 
#else 
    /* 
    * Do This 
    */ 
#endif 
+0

謝謝Sundeep。在內核版本3.9.0中,在proc_fs.h中,我看到create_proc_entry和proc_create在#ifdef CONFIG_PROC_FS下定義。create_proc_entry #else proc_create #endif這就是爲什麼您給出的代碼片段無法工作的原因。什麼是CONFIG_PROC_FS?它是否可用於內核模塊? – LML

0

看來,這是可用的 - 我只是想在Linux 3.2.0-80泛型(Ubuntu的12.04)

如果LINUX_VERSION_CODE < VERSION(3,11,0)& &定義(CONFIG_PROC_FS)

當滿足這個條件時,我使用create_proc_entry(),否則使用proc_create()。