Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Does kallsyms have all the symbol of kernel functions?

Tags:

c

linux

kernel

In the Linux kernel I want to probe the kernel function effective_prio(). It defined as static. When I go to search the symbol of it in the kallsyms I cannot find it. Does kallsyms have all the symbol of the kernel functions? If not, which symbols are not included?

like image 498
qyanqing Avatar asked Oct 03 '22 08:10

qyanqing


1 Answers

There are two possibilities for a function not appearing in /proc/kallsyms:

  1. If the function is marked as static, and the compiler decides to inline the function (with or without the inline keyword)
  2. If a config option or another #define removes a function from being compiled, e.g.:

    #ifdef CONFIG_OPT
    void foo(void) {
    }
    #endif
    

As far as I know, if a function does not appear in /proc/kallsyms, it is not possible to call or probe it from a module. However, /proc/kallsyms contains all functions of the kernel, not just the ones exported via EXPORT_SYMBOL/EXPORT_SYMBOL_GPL.

like image 144
mdd Avatar answered Oct 11 '22 07:10

mdd