2012-03-22 41 views
9

我開發了兩個簡單的模塊到內核。現在我想在一個模塊中定義一個函數,然後在另一個模塊中使用它。如何在一個linux內核模塊中定義一個函數並在另一個內核模塊中使用它?

我怎樣才能做到這一點?

只要定義沒有問題的其他模塊中的功能和來電?

+0

的可能的複製[如何從另一個調用模塊導出的內核模塊的功能?(HTTP://計算器.com/questions/12311867/how-to-call-exports-kernel-module-functions-from-another-module) – 2017-05-20 12:27:05

回答

25

module1.c定義它:

#include <linux/module.h> 

int fun(void); 
EXPORT_SYMBOL(fun); 

int fun(void) 
{ 
    /* ... */ 
} 

而且在module2.c使用它:

extern int fun(void); 
+0

我還有一個問題。在目錄/ var/log /中打開文件消息,看看printk完成了購買我的功能。出現如下消息:「模塊許可證」未指定「taints kernel」,「由於內核污染而禁用鎖定調試」。我只是調用一個模塊的功能來在另一個模塊中打印消息。 – Ricardo 2012-03-22 11:01:14

+1

@Ricardo:這與導出函數無關,但僅僅是因爲您沒有定義模塊的許可證。使用'MODULE_LICENSE'宏來做到這一點。 – 2012-03-22 11:10:22

+0

正在工作。謝謝。對於內核映像中的模塊,是相同的過程? – Ricardo 2012-03-22 13:40:49