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
.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…