使用内核版本Linux 2.6.32通过驱动模块的加载在/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);Linux系统下操作硬件寄存器Linux 内存泄露检测相关资讯 Linux驱动
- Linux的WDT(watchdog)驱动 (07/23/2015 10:25:38)
- Linux最简单的驱动编写及测试流程 (05/23/2015 09:25:33)
- AMD统一Linux开源和闭源驱动 (10/09/2014 16:36:05)
| - 在Linux上安装闭源驱动程序、媒体 (07/21/2015 15:13:14)
- AMD催化剂Linux驱动打败Windows驱 (01/04/2015 14:26:27)
- Linux驱动的两种加载方式过程分析 (06/23/2014 08:55:19)
|
本文评论 查看全部评论 (0)