linux 驱动 --- device_create_file 和 class_create_file 的使用

device_create_file

device_create_file 是 Linux 内核驱动开发中用于在 sysfs 文件系统中为设备创建属性文件的核心函数。其核心作用是通过虚拟文件系统暴露设备属性,实现用户空间与内核驱动的交互。

核心作用

sysfs 属性暴露

在 /sys/class/<设备类名>/<设备名>/ 目录下生成属性文件(如 status),用户空间程序可通过 cat 读取或 echo 写入该文件,实现与设备驱动的交互。

动态数据操作

通过定义属性的 show(读)和 store(写)函数,驱动可响应用户空间操作。例如:

  • 读取设备状态(如 cat /sys/class/my_class/mydev/status
  • 修改配置参数(如 echo 1 > /sys/class/my_class/mydev/status

 class_create_file

class_create_file 的主要用途是为设备类(class)在 sysfs 中创建统一的属性文件,从而允许用户空间通过该类级别的接口与所有属于该类的设备进行交互。

应用场景 - 为所有USB设备类(usb_device_class)添加一个 reset 属性,允许用户空间通过写入该文件触发所有USB设备的复位操作

static ssize_t reset_store(struct class *class, struct class_attribute *attr, const char *buf, size_t count) {
    // 遍历所有USB设备并执行复位逻辑
    return count;
}

static struct class_attribute class_attr_reset = {
    .attr = {.name = "reset", .mode = 0220}, // 仅可写
    .store = reset_store,
};

// 在模块初始化时注册
class_create_file(usb_device_class, &class_attr_reset);

 

posted @ 2025-07-03 13:38  流水灯  阅读(101)  评论(0)    收藏  举报