陈莉君Linux内核之旅

您的位置

Linux设备驱动模型(二)-文件系统之视图

推荐给好友
打印
加入收藏
文章出处:与非网 更新于2009-08-14 19:13:00

    虽然设备模型的初衷是为了方便电源管理而提供出的一种设备拓扑结构,但是为了方便调试,设备模型的开发者决定将设备结构树导出为一个文件系统,这就是sysfs文件系统,它可以帮助用户能以一个简单文件系统的方式来观察系统中各种设备的拓扑结构。这个举措很快被证明是非常明智的,首先sysfs代替了先前处于/proc下的设备相关文件;另外它为系统对象提供了一个很有效的视图。实际上,sysfs起初被称为driverfs。最终sysfs使得我们认识到一个全新的对象模型非常有利于系统。今天所有2.6内核的系统都拥有sysfs文件系统,而且几乎都毫无例外的将其挂载。
             图一是挂载于/sys目录下的sysfs文件系统的局部视图。
    /sys
     |---block/
     |   |--fd0
     |   |--hda
     |   |--dev
     |   |--device->../../devices/pci0000:00/0000:00:1f.1/ide0/0.0
     |    ...
     |--bus/
     |--class/
     |--devices/
     |--firmware/
     |--power/
     |--module/
   

Sysfs的根目录下包含了七个目录:block, bus, class, devices, firmware, ,modulepower。 block目录下的每个子目录都对应着系统中的一个块设备。反过来,每个目录下又都包含了该块设备的所有分区。bus目录提供了一个系统总线视图。 class目录包含了以高层功能逻辑组织起来的系统设备视图。devices目录是系统中设备拓扑结构视图,它直接映射出了内核中设备结构体的组织层次。 firmware目录包含了一些诸如ACPI,EDD,EFI等低层子系统的特殊树。power目录包含了系统范围的电源管理数据。
其中最重要的目录是devices,该目录将设备模型导出到用户空间。目录结构就是系统中实际的设备拓扑。其它目录中的很多数据都是将devices目录下的数据加以转换加工而得。比如,/sys/class/net/目录是以注册网络接口这一高层概念来组织设备关系的,在这个目中可能会有目录eth0,它里面包含的devices文件其实就是一个指回到devices下实际设备目录的符号连接。
   随便看看任何你可访问到的Linux系统,这种系统设备视图相当准确和漂亮,而且可以看到class中的高层概念与devices中的低层物理设备,以及bus中的实际驱动程序之间互相联络是非常广泛的。

发布广告