Chinaunix首页 | 论坛 | 博客
  • 博客访问: 74583
  • 博文数量: 10
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 151
  • 用 户 组: 普通用户
  • 注册时间: 2012-12-15 16:45
个人简介

多动脑,少走路。

文章分类
文章存档

2015年(4)

2014年(2)

2013年(4)

分类: 嵌入式

2013-09-25 22:02:25


udev实现了用户空间动态的方法管理/dev目录/dev目录是设备目录,里面的文件就是设备文件。udev文件系统在用户空间工作,它可以根据sysfs文件系统导出的信息(设备号(dev)等),动态建立和删除设备文件。而不再需要使用mknod来手动建立设备文件,也不必为查找设备号(尤其是驱动中动态申请产生的设备号)而头疼。

Linux2.6以后出现了udevUdev依赖于sysfs输出到用户空间所有设备信息,以及当设备添加或者删除时,/sbin/hotplug对它的通知。当用户向系统添加或者删除设备时(kobject被创建或者被删除),会产生热插拔事件,这会导致内核调用用户空间的应用程序/sbin/hotplug,该程序是一个典型的bash脚本程序。

为了能让udev能够正常工作,一个设备驱动程序要做的事情是:通过sysfs将驱动程序所控制设备的主设备号和此设备号导出到用户空间。对于那些使用子系统分配主设备号和次设备号的驱动程序,该工作已经有子系统完成,驱动程序不做任何事情。这样的子系统有:ttymiscusbinput,scsi,block,i2c,network,framebuffer子系统。如果驱动程序通过调用cdev_init函数,自己处理获得主设备号和次设备号,那么为了能正确的使用udev,需要对驱动程序进行修改。Udevsysfs中的/class/目录树下搜索名为dev的文件,这样内核通过/sbin/hotplug接口调用它的时候,就能获得分配给特定设备的主设备号和次设备号。
该图来源《essential Linuxdevice driver》,文字主要参考《Linux device driver》。

阅读(2868) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~