将某些符号(例如函数)定义为可导出(从内核可加载模块中看到)是宏。如果该符号没有“ EXPORT_SYMBOL”,则将无法从模块访问该符号。
EXPORT_SYMBOL_GPL将仅在GPL许可的模块中显示该符号,并且
EXPORT_SYMBOL-在具有任何许可的模块中显示该符号。
http://lwn.net/Articles/154602/-关于EXPORT_SYMBOL_GPL的值(2005年,corbet)
插入可加载模块时,必须将其对内核功能和数据结构的任何引用链接到当前正在运行的内核。但是,模块加载器并不提供对所有内核符号的访问。仅那些已明确导出的文件才可用。
出口有两种口味:香草(EXPORT_SYMBOL)和纯GPL(EXPORT_SYMBOL_GPL)。前者可用于任何内核模块,而后者不能被任何不具有GPL兼容许可证的模块使用。



