sysfs 创建属性文件的方法

#define DEVICE_ATTR(_name, _mode, _show, _store) \
    struct device_attribute dev_attr_##_name = __ATTR(_name, _mode, _show, _store)


1、创建单个属性文件
 
DEVICE_ATTR(mipi_read, S_IRUGO | S_IWUSR, mipi_read_show, mipi_read_store);


device_create_file(dev, &dev_attr_mipi_read);或者sysfs_create_file(&dev->kobj, &attr->attr);

其中device_create_file()函数代码如下,只是检查了读写函数是否存在,然后直接调用sysfs_create_file()函数。


int device_create_file(struct device *dev,const struct device_attribute *attr)
{
    int error = 0;
    if (dev) {
        WARN(((attr->attr.mode & S_IWUGO) && !attr->store),
          "Attribute %s: write permission without 'store'\n", attr->attr.name);
  
        WARN(((attr->attr.mode & S_IRUGO) && !attr->show),
          "Attribute %s: read permission without 'show'\n", attr->attr.name);
        error = sysfs_create_file(&dev->kobj, &attr->attr);
    }
    return error;
}
 
void device_remove_file(struct device *dev,   const struct device_attribute *attr)
{
    if (dev)
        sysfs_remove_file(&dev->kobj, &attr->attr);
}

2、创建多个属性文件

DEVICE_ATTR(disp_connect, S_IWUGO | S_IRUGO, show_connect, store_connect);
DEVICE_ATTR(gamma, S_IWUGO | S_IRUGO, show_gamma, store_gamma);
DEVICE_ATTR(polling, S_IWUGO | S_IRUGO, show_polling, store_polling);

/* attr group */
static struct attribute *attr_list[] = {
    &dev_attr_disp_connect.attr,
    &dev_attr_gamma.attr,
    &dev_attr_polling.attr,
    NULL
};

static struct attribute_group display_attr_group = {
    .attrs = attr_list,
};

sysfs_create_group(&pdev->dev.kobj, &display_attr_group);



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值