学习日志(十七)
Linux的热拔插UDEV机制
Udev设备工具
Udev简介
udev是一个设备管理工具;
udev以守护进程的形式运行,通过侦听内核发出来的uevent来管理/dev目录下的设备文件。
udev在用户空间运行,而不在内核空间运行。它能够根据系统中的硬件设备的状态动态更新设备文件,包括设备文件的创建,删除等。设备文件通常放在/dev目录下。
使用udev后,它会在/dev目录下创建真正存在的设备文件句柄了,应用层就可以通过文件句柄操作了。
linux系统运行机制结构图:
应用层调用:库函数->系统调用->内核->硬件;
udev配置文件一般在哪:
它的配置文件在:
/etc/udev/udev.conf
这个一般是开发人员写好的udev配置文件。
规则文件的创建
为何要创建规则文件:
创建规则文件是为了让udev机制能认识他是usb类型设备,或者其他类型设备,并为
usb设备创建文件,否则即使内核识别到了usb设备,发出uevent,udev也不会在/dev
下面创建对应的设备文件。
如何建立自己的规则文件:
我们一般在:/etc/udev/rules.d 文件夹下创建规则文件:
/etc/udev/rule.d
比如创建usb热拔插的规则:
sudo vim 51-android.rules
在51-android.rules 中输入:
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", MODE="0666"
这样就是建立了usb热拔插规则的文件。
总结:
说白了:当设备插入,内核知道后,发出uevent,udev设备工具一直在监听,监听到uevent后,根据规则文件的规则(可以是自己创建的),判断它是什么类型的设备,并在/dev下面为它创建对应的设备文件,这样应用层就通过文件句柄访问到设备了;