sysfs接口说明

来源:互联网 发布:windows刷mac os 编辑:程序博客网 时间:2024/05/23 10:26

以gpiolib.c文件里边的sysfs接口为例。


device attr定义方式有好几种,

1. 下面是通过DEVICE_ATTR宏定义的方式

static const DEVICE_ATTR(active_low, 0644,

gpio_active_low_show, gpio_active_low_store);


static const struct attribute *gpio_attrs[] = {

&dev_attr_value.attr,

&dev_attr_active_low.attr,

NULL,

};


static const struct attribute_group gpio_attr_group = {
.attrs = (struct attribute **) gpio_attrs,
};

sysfs_create_group(&dev->kobj, &gpio_attr_group);
//在kobject对应的目录下生成一组文件


2. 下面是通过power_attr()定义的方式

#define power_attr(_name) \
static struct kobj_attribute _name##_attr = {\
.attr= { \
.name = __stringify(_name),\
.mode = 0644,\
},\
.show= _name##_show, \
.store= _name##_store, \
}

static ssize_t pm_async_show(struct kobject *kobj, struct kobj_attribute *attr,
     char *buf)
{
return sprintf(buf, "%d\n", pm_async_enabled);
}

static ssize_t pm_async_store(struct kobject *kobj, struct kobj_attribute *attr,
      const char *buf, size_t n)
{
unsigned long val;
if (strict_strtoul(buf, 10, &val))
return -EINVAL;
if (val > 1)
return -EINVAL;
pm_async_enabled = val;
return n;
}

power_attr(pm_async);
static struct attribute *g[] = {  
        .............
&pm_async_attr.attr,
        .............
};

static struct attribute_group attr_group = {
        .attrs = g,
};

sysfs_create_group(power_kobj, &attr_group);







0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 老人吃不进去饭怎么办 老人吃什么就吐怎么办 老人吃了就吐怎么办 老人吃饭噎着了怎么办 胃胀气嗝不出来怎么办 嗓子咽口水都疼怎么办 产后盆底肌肉松弛怎么办 2个月宝宝鼻塞怎么办 人淹死捞不上来怎么办 胶囊卡在胃里怎么办 药卡在气管里怎么办 胶囊药卡在气管怎么办 被胶囊卡在喉咙怎么办 药卡在食道里怎么办 胶囊黏在喉咙里怎么办 要一直卡在喉咙怎么办 胃老是往上反气怎么办 有口气憋在喉咙怎么办 肛裂伤口不愈合怎么办 肛裂口子不愈合怎么办 宝宝胃食道反流怎么办 去角质后脸发红怎么办 红烧肉做的太甜怎么办 红烧排骨太甜了怎么办 唱歌时嗓子有痰怎么办 一唱歌喉咙有痰怎么办 鼻子老是打喷嚏还流鼻涕怎么办 鼻涕流到喉咙里怎么办 鼻塞怎么办怎样让鼻通气 流清鼻涕嗓子疼怎么办 喉咙疼咳嗽有痰怎么办 扁桃体发炎痛得厉害怎么办 腭垂掉下来了怎么办 喉咙干有异物感怎么办 嗓子干有异物感怎么办 输液的时候手疼怎么办 一感冒就嗓子哑怎么办 4岁儿童喉咙沙哑怎么办 嗓子老有异物感怎么办 喉咙咽口水都疼怎么办? 舌头上长了溃疡怎么办