国嵌内核驱动进阶班-7-5(自动创建设备文件)
2015-06-04 00:56
453 查看
linux 2.6.13 开始,devfs不存在,udev取代devfs.
udev(mdev)存在应用层,可以实现设备文件的自动创建和删除。
过程:
驱动代码调用class_create创建一个class,再为每个设备调用class_create创建对应的设备。
※ 自动创建设备文件需要udev的支持
struct class *myclass = class_create(THIS_MODULE, "mydriver");
device_create(myclass,NULL, MKDEV(major_num, 0), NULL, "mydevice");
udev(mdev)存在应用层,可以实现设备文件的自动创建和删除。
过程:
驱动代码调用class_create创建一个class,再为每个设备调用class_create创建对应的设备。
※ 自动创建设备文件需要udev的支持
struct class *myclass = class_create(THIS_MODULE, "mydriver");
device_create(myclass,NULL, MKDEV(major_num, 0), NULL, "mydevice");
#include <linux/module.h> #include <linux/fs.h> #include <linux/device.h> /* device_create()*/ struct class *myclass; dev_t devno;/*设备号*/ /*设备驱动模块加载函数*/ static int memdev_init(void) { int result = -1;/*返回值*/ /* 动态分配设备号 */ result = alloc_chrdev_region(&devno, 0, 1, "memdev"); if (result < 0) { return -1; } /* mem_major = MAJOR(devno); */ /*自动创建设备文件*/ myclass = class_create(THIS_MODULE,"test_char"); /*在sys下创建类目录/sys/class/test_char*/ if(IS_ERR(myclass)) { printk("Err: failed in creating class.\n"); return -1; } /*/dev目录下创建 memdev的设备文件*/ device_create(myclass, NULL, devno, NULL, "memdev"); return 0; } /*模块卸载函数*/ static void memdev_exit(void) { device_destroy(myclass, devno); /*delete device node under /dev*/ class_destroy(myclass); /*delete class created by us*/ unregister_chrdev_region(devno, 1); /*释放设备号*/ } MODULE_AUTHOR("renhl"); MODULE_LICENSE("GPL"); module_init(memdev_init); module_exit(memdev_exit);
相关文章推荐
- 数据结构之区间K大数
- 用OpenGL绘制旋转的机器人手臂
- [转]IOS开发中四种解析Json的方法
- 酒店预订房型对应时间段简单模板
- content = "IE=edge,chrome=1" 详解
- EDW on Hadoop(Hadoop上的数据仓库)技术选型和实践思考
- 网站
- C# webservice初探
- vi 之查找替换
- 就这样,在Linux的路上越走越远
- 对Json数据的处理(模拟获取数据是来自于本地)
- If you had an array of 1 million values and you had to remove duplicates
- 自定义css博客皮肤
- 2015 6 4 难眠之夜啊
- python 模块加载
- keyle的Shader-学习手札
- 国嵌内核驱动进阶班-7-4(Poll设备方法)
- AppCompat does not support the current theme features
- POJ 1201 解题报告
- 各公司面试经历