问题描述
我正在尝试创建一个 proc 条目.我的 init_module 函数如下
I'm trying to create a proc entry.My init_module function is as below
int init_module()
{
printk(KERN_INFO "proc2:Module Loaded
");
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);
}
程序的其余部分包括变量定义和回调函数.
rest of program include variable definition and callback functions.
当我编译这个程序时,它编译得很好.当我使用 insmod
时,它不会回复我提示.lsmod
列出了我的模块和一个人使用的节目(不知道是什么).dmesg
未显示上述任何 printk 消息.
when i compile this program it compiles well.when i use insmod
it doesn't reply me prompt.lsmod
lists my module and shows used by one (don't know what).dmesg
shows none of the above printk messages.
你能告诉我这里有什么问题吗?
can you tell me what's wrong here?
推荐答案
Try echo "7" >/proc/sys/kernel/printk
启用所有控制台日志级别.
Try echo "7" > /proc/sys/kernel/printk
to enable all console log levels.
数字对应如下:
#define KERN_EMERG "<0>" /* system is unusable*/
#define KERN_ALERT "<1>" /* action must be taken immediately*/
#define KERN_CRIT "<2>" /* critical conditions*/
#define KERN_ERR "<3>" /* error conditions*/
#define KERN_WARNING "<4>" /* warning conditions*/
#define KERN_NOTICE "<5>" /* normal but significant condition*/
#define KERN_INFO "<6>" /* informational*/
#define KERN_DEBUG "<7>" /* debug-level messages*/
默认数字是 4,它允许控制台至少显示 KERN_WARNING
中的消息.这就是您在 KERN_INFO
级别看不到登录的原因.
The default number is 4, which allows console to show messages only at least in KERN_WARNING
.That's why you cannot see log in KERN_INFO
level.
这篇关于dmesg 没有显示 printk 语句的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!