20 sysfs
sysfs
定义
sysfs 是 Linux 内核提供的一个 虚拟文件系统(类似 /proc),挂载在 /sys 下
作用:
- 展示内核对象(
kobject)及其属性给用户空间 - 提供用户态访问和控制硬件及内核状态的接口
- 支持驱动和设备管理、模块信息查看、电源管理等
特点:
- 虚拟文件系统,不占用实际磁盘空间
- 每个 kobject 对象在 sysfs 中对应一个目录
- 属性(
attribute)以文件的形式暴露,读写这些文件会触发内核的回调函数
结构
| 目录 | 作用 |
|---|---|
/sys/class/ |
按设备类别(class)组织的设备,如 net、gpio、leds 等 |
/sys/bus/ |
按总线类型组织设备,如 pci、usb、platform 等;还包含驱动/设备信息 |
/sys/devices/ |
所有 struct device 对象,按设备树/总线组织,最底层 |
/sys/module/ |
已加载了的内核模块 |
/sys/block/ |
块设备信息,如硬盘、闪存分区 |
/sys/fs/ |
文件系统相关信息 |
/sys/power/ |
电源管理相关信息 |
/sys/firmware/ |
固件信息,设备树、ACPI 等 |
1.sysfs中的设备应该是已经和驱动匹配上了的,还是只要设备树中有的,这里都会有?
- 是已经和驱动匹配上了的设备,因为
/sys/devices/下的设备本质上是内核中的一个个struct device,而struct device实例是在驱动和设备匹配之后才创建的
kobject
kobject 是内核对象的抽象,管理引用计数、生命周期和属性。
sysfs 是 kobject 的用户态接口:
每个注册到 sysfs 的 kobject 对象在
/sys下生成一个目录。属性以 文件的形式暴露:
1
2/sys/class/net/eth0/operstate # 读取网络接口状态
/sys/class/leds/led0/brightness # 控制 LED 亮度
操作属性文件 → 内核通过回调函数处理读写 → 驱动或内核状态改变
参考链接
All articles on this blog are licensed under CC BY-NC-SA 4.0 unless otherwise stated.
