2012-03-22 14 views
9

Opracowałem dwa proste moduły do ​​jądra. Teraz chcę zdefiniować funkcję w jednym module, a następnie użyć go w drugim.Jak zdefiniować funkcję w jednym module jądra Linuxa i użyć jej w innym?

Jak mogę to zrobić?

Po prostu zdefiniuj funkcję i dzwoniącego w drugim module bez problemów?

+0

Możliwy duplikat [Jak zadzwonić eksportowanych funkcji moduł jądra z innego modułu?] (Http: // stackoverflow .pl/questions/12311867/how-to-call-exported-kernel-module-functions-from-another-module) –

Odpowiedz

25

zdefiniować go w module1.c:

#include <linux/module.h> 

int fun(void); 
EXPORT_SYMBOL(fun); 

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

i używać go w module2.c:

extern int fun(void); 
+0

Nadal mam problem. W katalogu/var/log/i otwórz wiadomości do pliku, aby zobaczyć zrobiony printk buy my function. Pojawia się następujący komunikat: "moduł license" nieokreślony "taints kernel", "Wyłączenie debugowania blokady z powodu skażenia jądra". Po prostu nazywam funkcję jednego modułu, aby wydrukować wiadomość w drugim module. – Ricardo

+1

@Ricardo: Nie ma to związku z eksportowaniem funkcji, ale po prostu z tym, że nie zdefiniowałeś licencji modułu. Aby to zrobić, użyj makra 'MODULE_LICENSE'. –

+0

Działa. Dziękuję Ci. Dla modułów wewnątrz obrazu jądra, jest ten sam proces? – Ricardo

Powiązane problemy