文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>写2.6内核驱动程序所遇问题解

写2.6内核驱动程序所遇问题解

时间:2010-05-20  来源:jianyuehan

一、write ioctl 警告:从不兼容的指针类型初始化
原因在于:write中的char *buf应该为const char *buf;ioctl中的long data为unsigned long data
  二、irqreturn函数中的参数变化
2.6中的irqreturn函数中只有两个参数了,原来的irqreturn_t int_interrupt(int irq,void * dev_id,struct pt_regs *regs);应该是irqreturn_t int_interrupt(int irq,void * dev_id);
  三、2.6内核高版本中的frags值发生变化
原来头文件里没有SA_INTERRUPT了,一般使用IRQF_SHARED 了。
rquest_irq(PRINT_IRQ,int_interrupt,IRQF_SHARED,INT_DEV_NAME,NULL);
  四、中断所需的头文件不同
2.4内核中中断的注册和注销使用的头文件#include <linux/shed.h>
2.6内核中中断的注册和注销使用的头文件#include <linux/interrupt.h>
五、预留主设备号和次设备号
1.可用的主设备号范围如下:
60~63 120~127 240~254
2.主设备号10的次设备号中240~255范围也用在测试或特定平台上。
  六、printk函数输出
1输出可标记等级,默认为KERN_WARNNING,等同于下面几句
printk("<4>" "system ok\n");
printk("<4> system ok\n");
printk("system ok\n");
2.必须使用“\n”字符,否则调试过程混乱。当不使用它时,下一条输出会紧接着前一句,而且会输出标记级别。
如printk("hello world");printk("goodbye\n");则输出时为hello world<6>goodbye.
  七、思考?
1.为什么普通用户在执行./test的时候,总是提示设备文件打开出错,
而用root用户执行./test的时候就成功了呢?
测试解决了,在root用户下将设备文件访问权限改为666,再就可以了。
2.一个设备文件,不能同时被两个设备同时使用。先打开的成功,后打开的出错。
相关阅读 更多 +
排行榜 更多 +
像素世界杯中文版下载

像素世界杯中文版下载

赛车竞速 下载
哆啦A梦的铜锣烧店物语破解版下载

哆啦A梦的铜锣烧店物语破解版下载

模拟经营 下载
阿斯特赖亚六面神谕手机版下载

阿斯特赖亚六面神谕手机版下载

策略塔防 下载