Does kallsyms have all the symbol of kernel functions?
c, kernel, linux
Solution
There are two possibilities for a function not appearing in `/proc/kallsyms`:
- If the function is marked as `static`, and the compiler decides to inline the function (with or without the `inline` keyword)
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`.
Problem
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?