内核符号 __tracepoint_module_load 在哪里定义?
Posted
技术标签:
【中文标题】内核符号 __tracepoint_module_load 在哪里定义?【英文标题】:Where is the kernel symbol __tracepoint_module_load defined? 【发布时间】:2020-04-03 05:43:26 【问题描述】:内核符号__tracepoint_module_load
在哪里定义?
曾经在/proc/kallsyms
看到过,现在找不到了。
bootlin.com/linux/ 也找不到。
【问题讨论】:
【参考方案1】:内核符号__tracepoint_module_load在哪里定义?
有TRACE_EVENT
宏,最终使用__DECLARE_TRACE
,在哪里可以看到:
extern struct tracepoint __tracepoint_##name;
所以我们可以在include/trace/events/module.h 中为module_load
找到合适的TRACE_EVENT
“呼叫”:
TRACE_EVENT(module_load,
...
在/proc/kallsyms
输出D
表示符号在初始化数据段中:
ffffffff91af5240 D __tracepoint_module_load
附:如果预处理器魔法 elixir.bootlin.com 没那么有用。要进行真正的调查,只需克隆Linux kernel 或从pub 下载适当的源代码。
【讨论】:
好的,谢谢。那很难。此外,您知道内核需要使用哪些选项构建,以便将__tracepoint_module_load
符号导出到 /proc/kallsyms
吗?我注意到需要CONFIG_MODULES
...但是还有什么? CONFIG_KALLSYMS_ALL
和 CONFIG_TRACEPOINTS
也需要吗?以上是关于内核符号 __tracepoint_module_load 在哪里定义?的主要内容,如果未能解决你的问题,请参考以下文章
访问未通过 EXPORT_SYMBOL* 导出的 Linux 内核符号
在linux内核中为什么解析设备树时会使用be32_to_cpup()接口?
无法解析的外部符号 __imp____glutInitWithExit@12,该符号在函数 _glutInit_ATEXIT_HACK@8 中被引用