我有一个简单的模块,编写如下:
#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 时不会产生任何输出。
我试过更换&#34; KERN_DEBUG&#34;较低级别仍然没有输出,所以我不认为日志级别是问题。
我怎样才能验证调用init函数?如果没有被调用,我的错误是什么?
我在Arch Linux上运行并编译内核版本4.6.1-2。
e:oops
答案 0 :(得分:2)
KERN_DEBUG
之后不应该是逗号。所以看起来应该是这样的:
static int __init hellomod_init(void)
{
printk(KERN_DEBUG "Hello, world!\n");
return 0;
}