从当前模块获取 Linux 内核模块名称

时间:2021-03-12 19:57:43

标签: c linux-kernel kernel-module

我正在编写一些内核模块,但是对于调试输出,我想(自动)打印出哪个内核模块正在生成输出。是否有函数或变量可以用来获取正在执行的模块的名称?

1 个答案:

答案 0 :(得分:1)

在内核模块的代码中,THIS_MODULE 指向代表这个模块的结构。您可以使用此结构的 name 字段来提取当前模块名称:

printk("Current module name: %s\n", THIS_MODULE->name);

如果您的代码可以编译(取决于配置)作为模块或作为内核的一部分,那么在后一种情况下 THIS_MODULE将为 NULL,因此您无法访问其字段。对于此类代码,您可以改用 module_name 宏:

printk("Current module name: %s\n", module_name(THIS_MODULE));

在内核核心代码(不是模块)中,宏被扩展为字符串 "kernel"

相关问题