insmod使用公共内核符号表来解析模块中未定义的符号。
公共内核符号表中包含了所有的全局内核项(即函数和变量)的地址,这是实现模块化驱动程序所必须的。
模块层叠技术:新模块可以使用由我们自己的模块导出的符号,这样我们可以在其他模块上层叠新的模块。
一个模块需要向其他模块导出符号,使用以下宏:
EXPORT_SYMBOL(name);
EXPORT_SYMBOL_GPL(name); #导出的模块只能被GPL许可证下的模块使用
符号必须在模块文件的全局部分导出,不能在函数中导出,因为以上宏被扩展为一个特殊变量的声明,该变量必须是全局的。
本文探讨了内核模块加载insmod如何利用公共符号表解析模块,介绍模块层叠技术,重点讲解了如何通过EXPORT_SYMBOL和EXPORT_SYMBOL_GPL宏导出和限制模块间的符号使用,强调符号必须在模块全局范围内导出。
1639

被折叠的 条评论
为什么被折叠?



