【发布时间】:2016-06-09 18:30:31
【问题描述】:
我有一个简单的模块,写法如下:
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/init.h>
MODULE_LICENSE("GPL");
static int __init hellomod_init(void)
{
printk(KERN_DEBUG, "Hello, world!\n");
return 0;
}
static void __exit hellomod_exit(void)
{
printk(KERN_DEBUG, "Goodbye, world!");
}
module_init(hellomod_init);
module_exit(hellomod_exit);
和
$ cat /proc/sys/kernel/printk
7 7 7 7
这样任何级别的消息都应该输出。
模块加载,这可以通过 lsmod 进行验证,但是在加载或卸载模块并检查 dmesg 时不会产生任何输出。
我已尝试将KERN_DEBUG 替换为较低级别,但仍然没有输出,所以我认为日志级别不是问题。
我还能如何验证 hellomod_init() 函数是否被调用?如果没有被调用,我的错误是什么?
我正在 Arch Linux 上运行和编译内核版本 4.6.1-2。
【问题讨论】:
-
KERN_DEBUG后面没有逗号,只有KERN_DEBUG "Message"。 -
哦,太尴尬了。谢谢!
标签: c linux linux-kernel kernel kernel-module