Linux驱动开发3——devfs udev procfs sysfs debugfs傻傻地分不清楚

Linux调试文件系统

1.1、procfs

早期的Linux内核中,内核通过procfs输出调试信息,可以在用户态通过读写procfs节点与内核进行交互,用来获取处理器、内存、设备驱动、进程等各种信息。但是随着Linux的普及,Linux驱动开发者往procfs中添加了大量的设备驱动相关的节点,因此,sysfs应运而生。

mount -t proc nondev /procfs

1.2、sysfs

sysfs基于kobject实现,而kobject是Linux内核设备驱动模型的基础,因此,sysfs是天然的为Linux设备驱动而服务的,主要用来添加相应的节点从而方便设备驱动的调试。

mount -t sys nondev /sys

1.3、debugfs

debugfs,顾名思义,就是为了内核调试而生的,主要是Linux内核向用户态输出调试信息和异常信息。

mount -t debugfs nondev /debugfs

Linux设备文件系统

2.1、devfs

Linux 2.6内核之前,使用devfs文件系统管理Linux设备文件,但是所有的设备文件都必须使用mknod命令创建,无法动态创建设备文件。

2.2、sysfs+udev

Linux 2.6内核引入了sysfs文件系统,一方面是为了给procfs减负,另一方面是为了方便管理设备文件。

sysfs基于kobject实现,Linux驱动模块可以添加相应的节点进行驱动调试;除此之外, 可以通过class_create()和device_create()动态创建设备文件。这就是udev的事情,udevd是用户态的守护进程,class_create()和device_create()在sysfs中创建相应的节点并触发uevent,udevd收到uevent事件之后,通过解析sysfs节点,按照/etc/udev/udev.conf规则在/dev下创建设备文件。

猜你喜欢

转载自www.cnblogs.com/justin-y-lin/p/10684341.html