linux 内核和用户的通信交互 --- 基于内存的虚拟文件系统(debugfs、configfs、sysfs、procfs)
procfs
专为进程信息设计,动态生成系统运行时数据(如内存、CPU、中断、设备驱动状态),挂载于 /proc。
- 功能:
- 提供进程目录(如
/proc/PID/),包含命令行、环境变量、内存映射等。 - 暴露系统全局信息(如
/proc/cpuinfo、/proc/meminfo、/proc/modules)。 - 支持有限的数据修改(如通过
/proc/sys/调整内核参数)。
- 提供进程目录(如
sysfs
面向设备驱动模型,展示硬件拓扑和驱动状态,挂载于 /sys。
- 功能:
- 组织设备树(如
/sys/bus/pci/devices/)、驱动模块(如/sys/module/e1000/)。 - 支持设备控制(如调整网卡 MTU、LED 灯状态)。
- 暴露硬件属性(如 CPU 频率、温度传感器数据)。
- 组织设备树(如
debugfs
专为内核开发者设计,提供灵活的调试接口,挂载于 /sys/kernel/debug
- 功能:
- 导出内核变量、数据结构(如寄存器值、统计信息)
- 调试驱动模块(如通过
echo 0x1234 > /sys/kernel/debug/my_driver/register把值写到驱动内的变量)。 - 监控内核子系统状态(如跟踪调度器行为)。
configfs
允许用户空间动态创建和配置内核对象,挂载于 /sys/kernel/config
- 功能:
- 通过
mkdir/rmdir创建/删除内核对象(如 USB Gadget 配置)。 - 支持属性文件读写(如设置 UVC 功能参数)。
- 通过

浙公网安备 33010602011771号