在Linux内核中,我想探究内核函数effective_prio()。它定义为static
当我在kallsyms中搜索它的符号时,找不到它。 kallsyms是否具有内核功能的所有符号?如果不是,则不包括哪些符号?

最佳答案

函数没有出现在/proc/kallsyms中的可能性有两种:

  • 如果该函数被标记为static,并且编译器决定内联该函数(带有或不带有inline关键字)
  • 如果一个配置选项或另一个#define从编译中删除了一个函数,例如:
    #ifdef CONFIG_OPT
    void foo(void) {
    }
    #endif
    

  • 据我所知,如果函数未出现在/proc/kallsyms中,则不可能从模块中调用或探测它。
    但是,/proc/kallsyms包含内核的所有功能,而不仅仅是通过EXPORT_SYMBOL/EXPORT_SYMBOL_GPL导出的功能。

    关于c - kallsyms是否具有内核功能的所有符号?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20196636/

    10-14 14:17