社区
Linux_Kernel
帖子详情
关于内核符号表导出?
yangzhifu
2011-08-13 06:34:29
一般情况下符号表的导出是一个模块针对于另外一个模块,现在有个问题就是我一个模块导出,但是另外一个模块就是给我们的内核,这里就出现了编译模块的时候可以编译成功,但是编译内核的时候发现函数不存在;请问这种导出方式是否有问题?
...全文
226
5
打赏
收藏
关于内核符号表导出?
一般情况下符号表的导出是一个模块针对于另外一个模块,现在有个问题就是我一个模块导出,但是另外一个模块就是给我们的内核,这里就出现了编译模块的时候可以编译成功,但是编译内核的时候发现函数不存在;请问这种导出方式是否有问题?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
jernymy
2011-08-20
打赏
举报
回复
使用objdump到处符号表?
帅得不敢出门
2011-08-20
打赏
举报
回复
你这种实现很奇怪. 需求也很奇怪.
小魔菇
2011-08-19
打赏
举报
回复
感觉反了
先有内核 才有模块
cqbamboo
2011-08-19
打赏
举报
回复
那好吧,我来接分
yangzhifu
2011-08-19
打赏
举报
回复
真没有人回答,我来总结一下,内核是一个可执行程序,而且也不支持动态链接,所以内核的的所有引用的函数都必须有定义,所以上面的导出肯定是不能够的,但是模块是可以引用其他的
获取Linux
内核
未
导出
符号的几种方式
从Linux
内核
的2.6某个版本开始,
内核
引入了
导出
符号的机制。只有在
内核
中使用EXPORT_SYMBOL或EXPORT_SYMBOL_GPL
导出
的符号才能在
内核
模块中直接使用。然而,
内核
并没有
导出
所有的符号。例如,在3.8.0的
内核
中,do_page_fault没有被
导出
。 而我的
内核
模块中需要使用do_page_fault,那么有那些方法呢?这些方法分别有什么优劣呢? 下面以do_page_fault为例,一一进行分析: 1、修改
内核
,添加EXPORT_SYMBOL(do_page_fault)或EXPORT_SYMBOL_GPL(do_page_fault)。
《深入Linux设备驱动程序
内核
机制》.pdf
如何
导出
符号、如何使用
导出
的符号?背后的
内核
机制 1、“处理未解决引用”问题的本质是在模块加载期间找到当前“未解决的引用“符号在内存中的实际目标地址。 通过“
符号表
”的形式向外界
导出
符号信息。 由EXPORT_SYMBOL等宏
导出
的符号,与一般的变量定义并没有实质性的差异,唯一的不同点在于它们被放在了特定的section中。 对这些section的使用需要经过一个中间环节,即链接脚本与链接器部分。
linux
内核
模块符号
导出
驱动程序编译生成的 ko 文件是相互独立的,即模块之间变量或者函数在正常情况下无法进行互相访问。而一些复杂的驱动模块需要分层进行设计,这时候就需要用到
内核
模块符号
导出
。
内核
符号
导出
指的是在
内核
模块中
导出
相应的函数和变量,在加载模块时被记录在公共
内核
符号表
中,以供其他模块调用。符号
导出
所使用的宏为 EXPORT_SYMBOL(sym)和 EXPORT_SYMBOL_GPL(sym)。它们定义在 “/include/linux/export.h”文件中。
内核
模块
导出
符号表
在
内核
中有的模块都是运行在同一个3-4G的
内核
空间的,模块和模块间就可以进行函数的直接调用,在调用前只需要将被调用函数的
符号表
导出
即可。在demoA模块中有一个add函数,在demoB模块中想调用demoA模块中的add函数,此时只需要让demoB模块拿到demoA模块中add函数的地址即可。这个过程就使用
导出
符号表
完成。
内核
模块符号
导出
驱动程序可以编译成
内核
模块,也就是KO文件。每个KO文件是相互独立的,也就是说模块之间无法互相访问。但是在某些使用场、要互相访问,如B模块要用A模块中的函数。(B模块依赖于A模块)这时候我们要怎么做呢?模块可以使用一下宏EXPORT_SYMBOL和EXPORT_SYMBOL_GPL
导出
符号到
内核
符号表
中。所谓“符号"就是
内核
中的函数名,全局变量名等。
符号表
就是用来记录这些“符号"的文件。
导出
去的符号可以被其他模块使用。使用前只需要声明一下即可。
Linux_Kernel
4,466
社区成员
17,461
社区内容
发帖
与我相关
我的任务
Linux_Kernel
Linux/Unix社区 内核源代码研究区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章