Chinaunix首页 | 论坛 | 博客
  • 博客访问: 233908
  • 博文数量: 82
  • 博客积分: 30
  • 博客等级: 民兵
  • 技术积分: 505
  • 用 户 组: 普通用户
  • 注册时间: 2011-02-23 14:59
文章分类

全部博文(82)

文章存档

2015年(81)

2011年(1)

我的朋友

分类: 嵌入式

2015-03-03 13:58:55

通过驱动模块的加载在/dev下创建设备文件,在驱动模块卸载时又自动的删除在/dev下创建的设备文件非常方便。而这个过程就是通过device_create()和device_destroy()内核函数完成的,在Linux2.6.27之前是class_device_create()和class_device_destroy()。最近在开发过程中发现device_create()参数使用很灵活,一不小心就会导致加载时内核报oops错误(vsnprintf引起)。google上搜到的一些文章也有着问题。如如下使用就会出错:
    device_create(my_class, NULL, MKDEV(major,minor), "hello" "%d",0);

    在"hello" "%d"之间加上","能解决insmod时oops错误,但是却不能在/dev目录下创建想要的设备文件。正确的调用方法如下:
    device_create(my_class, NULL, MKDEV(major,minor), NULL,"hello%d",0); 
阅读(1420) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~