linux驱动08:内核符号表

本文探讨了内核模块加载insmod如何利用公共符号表解析模块,介绍模块层叠技术,重点讲解了如何通过EXPORT_SYMBOL和EXPORT_SYMBOL_GPL宏导出和限制模块间的符号使用,强调符号必须在模块全局范围内导出。

insmod使用公共内核符号表来解析模块中未定义的符号。

公共内核符号表中包含了所有的全局内核项(即函数和变量)的地址,这是实现模块化驱动程序所必须的。

模块层叠技术:新模块可以使用由我们自己的模块导出的符号,这样我们可以在其他模块上层叠新的模块。

一个模块需要向其他模块导出符号,使用以下宏:

EXPORT_SYMBOL(name);

EXPORT_SYMBOL_GPL(name); #导出的模块只能被GPL许可证下的模块使用

符号必须在模块文件的全局部分导出,不能在函数中导出,因为以上宏被扩展为一个特殊变量的声明,该变量必须是全局的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值