EXPORT_SYMBOL_GPL 是一個宏,用于將符號(函數、變量、結構體等)導出為 Linux 內核模塊的全局符號。
在 Linux 內核中,一些符號是被標記為 EXPORT_SYMBOL 或 EXPORT_SYMBOL_GPL 的,這意味著它們可以在內核模塊中使用。EXPORT_SYMBOL_GPL 和 EXPORT_SYMBOL 的區別在于,EXPORT_SYMBOL_GPL 導出的符號只能被 GPL 許可證兼容的模塊使用,而 EXPORT_SYMBOL 導出的符號則沒有此限制。
EXPORT_SYMBOL_GPL 宏的定義如下:
#define EXPORT_SYMBOL_GPL(sym) EXPORT_SYMBOL_GPL_NS(GPL, sym)
其中,EXPORT_SYMBOL_GPL_NS 是一個宏定義,用于根據不同的命名空間導出符號。GPL 是一個命名空間,表示符號只能被 GPL 許可證兼容的模塊使用。
使用 EXPORT_SYMBOL_GPL 宏可以使函數和變量在編譯時被導出,以供其他內核模塊使用。這樣,內核模塊可以調用導出的函數、訪問導出的變量,實現模塊之間的功能擴展和共享。