在 Linux 内核中,我想探测内核函数effective_prio()。它定义为static。当我去搜索它的符号时,kallsyms我找不到它。是否kallsyms具有内核函数的所有符号?如果没有,哪些符号不包括在内?
函数没有出现在 中有两种可能/proc/kallsyms:
static,并且编译器决定内联该函数(带或不带inline关键字)如果配置选项或其他#define选项从编译中删除函数,例如:
#ifdef CONFIG_OPT
void foo(void) {
}
#endif
Run Code Online (Sandbox Code Playgroud)据我所知,如果一个函数没有出现在 中/proc/kallsyms,则不可能从模块中调用或探测它。但是,/proc/kallsyms包含内核的所有功能,而不仅仅是通过EXPORT_SYMBOL/导出的功能EXPORT_SYMBOL_GPL。
Lev*_*usa -1
kallsyms 仅列出 EXPORT_SYMBOL 和 EXPORT_SYMBOL_GPL 宏导出的符号。
这样做是为了安全。我们通常不希望模块能够访问例如内部或安全功能。这些只是违背了让内核模块尽可能安全,但允许它们尽可能多地做事的想法。
| 归档时间: |
|
| 查看次数: |
8017 次 |
| 最近记录: |