文档库 最新最全的文档下载
当前位置:文档库 › 报错笔记

报错笔记

1.ISO C90 forbids mixed declarations and code 警告
变量定义之前任何一条非变量定义的语句(注意:语句是会带分号的)都会引起这个警告!将非变量的定义移到变量定义之后 即可
例子 int irq_nu;上面的意思是 这两句要分开,
irq_nu=request_irq(INTSRC_TIMER2,timer_keyevent,SA_INTERRUPT, "timer3", NULL);
if (irq_nu) {
printk(KERN_INFO "timer3: can't get assigned irq\n");
}
else
printk("#############\n");
2.rmmod: chdir(2.6.31.6): No such file or directory
在编写驱动程序的时候有时候会出现这种情况,模块加载之后不能卸载或卸载之后不能在加载,cat /proc/devices 后发现设备还占用着设备号,
这种情况下,再次加载驱动模块肯定不会成功,必须重新启动才可以解决。最近仔细看书后发现自己在驱动程序的卸载函数中少写了两个函数调用,
以至于在加载模块的时候申请或添加的设备没有被释放或删除。
解决方案:
第一步、在/lib/modules/目录中建立与当前内核版本号一致的目录 如 uname -r 得到 2.6.31.6则mkdir -p /lib/modules/2.6.31.6 否则会
出现“rmmod: chdir(2.6.31.6): No such file or directory”类似的错误,而模块也没有被卸载;
第二步、在驱动模块卸载函数__exit中的cdev_del(struct cdev *)函数调用后即注销字符设备后调用 unregister_chrdev_region(dev_t devno, unsigned count)函数释
放在驱动加载函数__init中通过register_chrdev_region、alloc_chrdev_region,注册的主设备号。(cdev_del函数、unregister_chrdev_region函数缺一不可);
经过以上两步操作后,rmmod 模块名称 卸载模块就不会错误了,而且cat /proc/devices也不会再有已经卸载的模块的信息,这样再次加载模块也不会出错了!

相关文档
相关文档 最新文档