linux驱动层到应用层的重要接口sys文件系统---/sys目录详解

 Linux2.6内核中引入了sysfs文件系统。sysfs文件系统整理的设备驱动的相关文件节点,被视为dev文件系统的替代者。同时也拥有类似proc文件系统一样查看系统相关信息的功能。最主要的作用是sysfs把连接在系统上的设备和总线组织成分级的文件,使其从用户空间可以访问或配置。

 

Sysfs被加载在 /sys/目录下,它的子目录包括:

(本文以高通sdm630平台为例)

1)  Block:在系统中发现的每个块设备在该目录下对应一个子目录,如mmcblk0对应eMMC设备主节点(此部分可以参考文章: linux驱动由浅入深系列:块设备驱动之一(高通eMMC分区实例)。每个子目录中又包含一些属性文件,它们描述了这个块设备的各方面属性,如:设备大小。(loop块设备是使用文件来模拟的)

我们查看/sys/block目录的详细信息,发现都是链接文件,指向了/sys/devices/下的设备:

 

2)Bus:在内核中注册的每条总线在该目录下对应一个子目录,如: ide pci scsi usbpcmcia 其中每个总线目录内又包含两个子目录:devices和drivers,devices目录包含了在整个系统中发现的属于该总线类型的设备,drivers目录包含了注册到该总线的所有驱动。

 

3)Class:将设备按照功能进行的分类,如/sys/class/net目录下包含了所有网络接口。

 

其中power_supply可以查看充电相关的信息:cat /sys/class/power_supply/battery/uevent

4)Devices:包含系统所有的设备。

该目录层次与devicetree中描述的设备层次是相互对应的。


如上图中的soc文件夹对应dtsi文件中的:

 

slv_wlan文件夹对应dtsi中的:

 

5)Kernel:内核中的配置参数

 

6)Module:系统中所有模块的信息

 

7)Firmware:系统中的固件

 

8)Fs:描述系统中的文件系统

 

9)Power:系统中电源选项