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 宏可以使函数和变量在编译时被导出,以供其他内核模块使用。这样,内核模块可以调用导出的函数、访问导出的变量,实现模块之间的功能扩展和共享。