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