认识 linux sysfs文件系统

Posted bcbobo21cn

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了认识 linux sysfs文件系统相关的知识,希望对你有一定的参考价值。

先看一下相关资料的描述;

自2.6版本开始,linux内核开始使用sysfs文件系统,它的作用是将设备和驱动程序的信息导出到用户空间,方便了用户读取设备信息,同时支持修改和调整。

与ext系列和fat等文件系统不同的是,sysfs是一个系统在启动时构建在内存中虚拟文件系统,一般被挂载在/sys目录下,既然是存储在内存中,自然掉电不保存,不能存储用户数据。

事实上,在之前也有同样的虚拟文件系统建立了内核与用户系统信息的交互,它就是procfs,但是procfs并非针对设备和驱动程序,而是针对整个内核信息的抽象接口。

sysfs和procfs都是虚拟文件系统;

sysfs,它可以产生一个包含所有系统硬件层次视图,与提供进程和状态信息的proc文件系统十分类似;

sysfs把连接在系统上的设备和总线组织成为一个分级的文件,它们可以由用户空间存取,向用户空间导出内核的数据结构以及它们的属性。sysfs的一个目的就是展示设备驱动模型中各组件的层次关系,其顶级目录包括block,bus,drivers,class,power和firmware等.

sysfs提供一种机制,使得可以显式的描述内核对象、对象属性及对象间关系。sysfs有两组接口,一组针对内核,用于将设备映射到文件系统中,另一组针对用户程序,用于读取或操作这些设备。

sysfs 文件系统总是被挂载在 /sys 挂载点上。虽然在较早期的2.6内核系统上并没有规定 sysfs 的标准挂载位置,可以把 sysfs 挂载在任何位置,但较近的2.6内核修正了这一规则,要求 sysfs 总是挂载在 /sys 目录上;针对以前的 sysfs 挂载位置不固定或没有标准被挂载,

sysfs的根目录下包含了七个目录:block,bus,class,devices,firmware,module和power。

(1)block目录下的每个子目录都对应着系统中的一个块设备。反过来,每个目录下又都包含了该块设备的所有分区。

(2)bus目录提供了一个系统总线视图。

(3)class目录包含了以高层功能逻辑组织起来的系统设备视图。

(4)devices目录是系统中设备拓扑结构视图,它直接映射出了内核中设备结构体的组织层次。

(5)firmware目录包含了一些诸如ACPI,EDD,EFI等低层子系统的特殊树。

(6)power目录包含了系统范围的电源管理数据。

(7)module目录包含了内核模块。模块是一种向Linux内核添加设备驱动程序、文件系统及其他组件的有效方法。

下面来查看一下;

包含多个目录,块设备、总线、类、设备、电源等;

进到各个子目录看一下;我还不了解为什么有这么多块设备;bus目录下是按总线类别列出;

 

类,应该是设备类或设备驱动程序类,类别;

 

电源和固件;

 

查看一下 bus/pci/devices下,按资料说是设备描述符,我还不了解;

 

usb设备的描述符;

 

 

 

以上是关于认识 linux sysfs文件系统的主要内容,如果未能解决你的问题,请参考以下文章

linux内核源码分析之sysfs文件系统

sysfs 文件系统

sysfs 文件系统

sysfs 文件系统

使用 /sys 文件系统访问 Linux 内核

linux内核源码分析之sysfs文件系统