我正在尝试创建一个 proc entry。 我的 init_module 函数如下:
int init_module()
{
printk(KERN_INFO "proc2:Module Loaded\n");
proc_entry=proc_create_data(proc_name,0644,NULL,&fops,NULL);
if(proc_entry==NULL)
{
printk(KERN_INFO "proc2:Error registering proc entry");
}
else
{
printk(KERN_INFO "proc2:Proc Entry Created");
}
return 0;
}
以下是清理方法
void cleanup_module()
{
printk(KERN_INFO "proc2:module unloaded");
remove_proc_entry(proc_name,proc_entry);
}
程序的其余部分包括变量定义和回调函数。
当我编译这个程序时,编译器没有报错。但是当我使用insmod
命令时,它没有回应提示符。通过lsmod
命令,我的模块被列出并显示一个已使用(不知道是什么)。dmesg
命令没有显示以上任何一个printk消息。
你能告诉我这里出了什么问题吗?
| sudo tee
替换重定向以使其生效。 - russouesudo sh -c 'echo 7 > /proc/sys/kernel/printk'
的意思是以超级用户的身份执行该命令,将数字 7 写入到 /proc/sys/kernel/printk 文件中,从而调整内核打印消息的级别。 - Keith Thompson