【发布时间】:2013-10-09 13:21:04
【问题描述】:
我最近一直在研究这个问题,并查看了各种文章和 stackoverflow 帖子,但我似乎无法找到一个直接的答案。在创建内核模块时,我看到大多数代码如下所示:
#include <linux/init.h>
static int test_init(void) {return 0;}
static void test_exit(void) {;}
module_init(test_init);
module_exit(test_exit);
我发现的一个可能原因是这样做会增加将恶意代码注入正在运行的模块的难度。
另一个是命名空间不那么混乱,但这不只是在您正在链接和编译的内核模块的上下文中存在的问题吗?如果
insmod真的像 ld 那样将代码链接到内核中,那么我可以看到名称冲突会如何扰乱系统。是这个原因吗?
我想不出任何其他原因,我希望在我盲目开始使用约定之前澄清这一点。
提前谢谢你
【问题讨论】:
标签: c linux operating-system kernel kernel-module