【发布时间】:2020-04-03 05:43:26
【问题描述】:
内核符号__tracepoint_module_load在哪里定义?
曾经在/proc/kallsyms看到过,现在找不到了。
bootlin.com/linux/ 也找不到。
【问题讨论】:
标签: c linux-kernel trace tracepoint
内核符号__tracepoint_module_load在哪里定义?
曾经在/proc/kallsyms看到过,现在找不到了。
bootlin.com/linux/ 也找不到。
【问题讨论】:
标签: c linux-kernel trace tracepoint
内核符号__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 也需要吗?