01Linux驅動模組04-->匯出符號表
阿新 • • 發佈:2020-12-06
四、匯出符號表
vim ./include/linux/export.h +50
在一個核心模組中呼叫另外一個核心模組中的函式,需要提供者將函式的符號表(地址)匯出,呼叫者直接使用這個地址即可
1、匯出符號表的意義:
1)可以解決核心程式碼冗餘的問題,同種問題,一次實現,多次呼叫。
2)可以減小驅動開發的難度,在編寫Linux核心驅動的時候,一些核心機制實現的過程,驅動工程師不需要太過關心,核心工程師將這些介面直接供給驅動工程師使用,從而減小開發的難度。
2、操作過程:
1)在第一個模組的函式實現後,使用匯出函式符號表的巨集(即:EXPORT_SYMBOL_GPL(func)巨集);
如: int add(int a,int b) { return (a+b); } EXPORT_SYMBOL_GPL(add);
2)編譯第一個模組,生成一個Module.symvers的檔案,檔案中記錄著add函式的地址
3)將這個Module.symvers檔案複製到第二個模組目錄下,
4)在第二個模組中使用函式前,先進行宣告,
如:
extern int add(int,int);
int c = add(7,8);