当前位置: 技术问答>linux和unix
关于驱动程序中printk的问题
来源: 互联网 发布时间:2015-11-29
本文导语: 我的驱动部分源码如下: static int __init key16_init(void) { int res; printk("Start init_module!nr"); res=register_chrdev(DEV_MAJOR,DEV_NAME,&key16_fops); if (res Name = DEV_NAME; Device->KeyMajor = DEV_MAJOR; printk("key16_i...
我的驱动部分源码如下:
static int __init key16_init(void)
{
int res;
printk("Start init_module!nr");
res=register_chrdev(DEV_MAJOR,DEV_NAME,&key16_fops);
if (res Name = DEV_NAME;
Device->KeyMajor = DEV_MAJOR;
printk("key16_init finished!nr");
return 0;
}
module_init(key16_init);
module_exit(key16_exit);
MODULE_LICENSE("GPL");
我用的2.4版的内核,编译没有问题,insmod也没有报错,
但是按照我的理解,insmod时应该立即执行这个key16_init的函数啊,但是为什么我写的那些printk语句都没有起作用呢,即使后面注册设备什么的出了问题,但是刚进入key16_init函数时,这行:
printk("Start init_module!nr");
这个总该显示的吧。我执行insmod之后立刻又回到命令提示符,屏幕上什么输出都没有。开始以为没有insmod成功,但是如果insmod之后不用rmmmod,直接再insmod一次,它提示说该模块已经存在,看来也加载上去了。可是它为什么不显示printk的输出?还是哪里还要有什么设置?
static int __init key16_init(void)
{
int res;
printk("Start init_module!nr");
res=register_chrdev(DEV_MAJOR,DEV_NAME,&key16_fops);
if (res Name = DEV_NAME;
Device->KeyMajor = DEV_MAJOR;
printk("key16_init finished!nr");
return 0;
}
module_init(key16_init);
module_exit(key16_exit);
MODULE_LICENSE("GPL");
我用的2.4版的内核,编译没有问题,insmod也没有报错,
但是按照我的理解,insmod时应该立即执行这个key16_init的函数啊,但是为什么我写的那些printk语句都没有起作用呢,即使后面注册设备什么的出了问题,但是刚进入key16_init函数时,这行:
printk("Start init_module!nr");
这个总该显示的吧。我执行insmod之后立刻又回到命令提示符,屏幕上什么输出都没有。开始以为没有insmod成功,但是如果insmod之后不用rmmmod,直接再insmod一次,它提示说该模块已经存在,看来也加载上去了。可是它为什么不显示printk的输出?还是哪里还要有什么设置?
|
1.xterm下看不见,如果想看见可以使用两个命令
#dmesg
或者
#tail -n /var/log/messages
2.利用Alt+Fn切换到某个虚拟终端下运行。
#dmesg
或者
#tail -n /var/log/messages
2.利用Alt+Fn切换到某个虚拟终端下运行。
|
用dmesg命令查看
|
你的是x下吧
在x下面是很有可能看不到的
LDD书上有说
换到console模式下面再看看吧
在x下面是很有可能看不到的
LDD书上有说
换到console模式下面再看看吧