它的作用是允许其他模块或驱动程序使用该符号,即可以在其他模块中调用该导出的符号。 EXPORT_SYMBOL_GPL与EXPORT_SYMBOL的区别在于,EXPORT_SYMBOL_GPL将符号标记为“GPL许可证”下可用,意味着只有遵循GPL许可证规定的模块或驱动程序才能使用该导出的符号。 这样设计的目的是保护Linux内核的代码,防止许可证冲突和代码滥用。
EXPORT_SYMBOL_GPL 是一个宏,用于将符号(函数、变量、结构体等)导出为 Linux 内核模块的全局符号。 在Linux 内核中,一些符号是被标记为 EXPORT_SYMBOL 或 EXPORT_SYMBOL_GPL 的,这意味着它们可以在内核模块中使用。EXPORT_SYMBOL_GPL 和 EXPORT_SYMBOL 的区别在于,EXPORT_SYMBOL_GPL 导出的符号只能被 GPL 许可证...
EXPORT_SYMBOL_GPL(name); 这两个宏均用于将给定的符号导出到模块外. _GPL版本的宏定义只能使符号对GPL许可的模块可用。 符号必须在模块文件的全局部分导出,不能在函数中导出,这是因为上述这两个宏将被扩展成一个特殊用途的声明,而该变量必须是全局的。这个变量存储于模块的一个特殊的可执行部分(一个"ELF段" ...
EXPORT_SYMBOL 和EXPORT_SYMBOL_GPL 用于导出符号到内核符号表中(内核符号表可通过 ‘/proc/kallsyms’ 查看),导出的符号可以被其它模块调用,调用前需要先声明。 通过EXPORT_SYMBOL 导出的符号可以被包含GPL许可权的模块和不包含GPL许可权的模块调用; 通过EXPORT_SYMBOL_GPL 导出的符号只能被包含GPL许可权的模块调用,...
1. EXPORT_SYMBOL 的作用: EXPORT_SYMBOL 定义的函数或者符号对全部内核代码公开,不用修改内核代码就可以在其它内核模块中直接调用,即使用 EXPORT_SYMBOL 可以将一个函数以符号的方式导出给其他模块使用。 EXPORT_SYMBOL(name);EXPORT_SYMBOL_GPL(name);
EXPORT_SYMBOL()宏定义作用 EXPORT_SYMBOL宏定义定义的函数或者符号将对内核代码公开,不用修改内核代码就在其他的内核模块中直接调用,即使用EXPORT_SYMBOL可以将一个函数以符号的方式导出给其他模块使用。 使用方法 在模块函数定义之后使用"EXPORT_SYMBOL(函数名)"来导出。
在Linux内核中,导出符号是通过EXPORT_SYMBOL宏来实现的。当一个函数或变量需要导出时,开发者只需要在定义的地方使用EXPORT_SYMBOL宏即可,这样就可以让其他模块访问到该符号。另外,还有一个EXPORT_SYMBOL_GPL宏用于导出一些只能在GPL许可证下使用的符号,这样就可以限制某些符号的使用范围。
这里只显示EXPORT_SYMBOL,EXPROT_SYMBOL_GPL处理过的符号。 3.System.map内核符号文件 通过more /boot/System.map 可以查看内核符号列表。 可以显示编译好内核后所有在内核中的符号,模块中的要另行查看。 4.通过nm vmlinux也可以查看内核符号列表 可以显示编译好内核后所有在内核中的符号,模块中的要另行查看。
#defineEXPORT_UNUSED_SYMBOL_GPL(sym) 其作用分别为: EXPORT_SYMBOL:导出一般符号,用于使内部符号变成可加载模块。可加载模块的含义是可以通过命令insmod 动态加载内核模块。 EXPORT_SYMBOL_GPL:导出只兼容GPL License的符号,这些符号仅对具有GPL兼容许可证的模块可用。GPL-only符号的可能意图: ...