首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >访问未通过EXPORT_SYMBOL*导出的Linux内核符号

访问未通过EXPORT_SYMBOL*导出的Linux内核符号
EN

Stack Overflow用户
提问于 2012-03-31 07:17:57
回答 2查看 5K关注 0票数 5

我们需要访问net/ipv4/af_inet.c中的内核全局变量,这些变量不是从可加载的内核模块显式导出的。我们目前使用的是2.6.18内核。

kallsyms_lookup_name似乎不再可用(未导出)

__symbol_get返回NULL (在进一步读取时,symbol_get/__ symbol _get查看内核和现有模块的符号表,该符号表仅包含导出的符号,并确保从中导出符号的模块实际已加载)

有没有什么办法可以访问不是从内核模块导出的符号?

经过大量阅读和查看人们提供的答案,似乎很难在许多内核版本中找到一种方法,因为kAPI会随着时间的推移发生重大变化。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-03-31 12:57:11

你可以使用你之前提到的方法,通过从/proc/kallsyms获取它,或者只使用System.map中给出的地址(这是一样的),它看起来可能有些老土,但这就是我以前看到的方法(我从来没有真正地自己做过)。或者你可以构建你自己的定制内核,在那里你可以在你想导出的任何东西上执行EXPORT_SYMBOL,但是这不像是可移植的。

票数 5
EN

Stack Overflow用户

发布于 2012-04-01 16:54:54

如果性能不是一个大问题,您可以使用kallsyms_on_each_symbol()遍历整个符号列表(由GPL'd模块的内核导出),并检查名称以获得所需的名称。我不建议这样做,除非别无选择。

如果你想走这条路,这是我们其中一个项目的an example。查看kallsyms_on_each_symbol()的用法以及symbol_walk_callback()的代码,其他部分与此问题无关。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9951516

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档