【问题标题】:Where is the kernel symbol __tracepoint_module_load defined?内核符号 __tracepoint_module_load 在哪里定义?
【发布时间】:2020-04-03 05:43:26
【问题描述】:

内核符号__tracepoint_module_load在哪里定义?
曾经在/proc/kallsyms看到过,现在找不到了。

bootlin.com/linux/ 也找不到。

【问题讨论】:

    标签: c linux-kernel trace tracepoint


    【解决方案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_ALLCONFIG_TRACEPOINTS 也需要吗?
    猜你喜欢
    • 2017-12-17
    • 1970-01-01
    • 1970-01-01
    • 2014-01-27
    • 2011-05-30
    • 1970-01-01
    • 2015-05-05
    • 2021-05-18
    • 1970-01-01
    相关资源
    最近更新 更多