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 功能参数)。

 

posted @ 2025-06-30 11:55  流水灯  阅读(34)  评论(0)    收藏  举报