注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

时间记录器

记录我的Linux、Android学习之路

 
 
 

日志

 
 

关于sysfs中的一些方法  

2012-08-14 10:40:42|  分类: Linux |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

 

(include\linux\Device.h):

#define DEVICE_ATTR(_name, _mode, _show, _store) \

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

 

使用示例:

DEVICE_ATTR(vbus, 0644, musb_vbus_show, musb_vbus_store);

其中

_name:vbus

_mode:0644

_show:musb_vbus_show

_store:musb_vbus_store

替换后如下:

struct device_attribute dev_attr_ vbus = __ATTR(vbus, 0644, musb_vbus_show, musb_vbus_store);

在include\linux\sysfs.h中有

#define __ATTR(_name,_mode,_show,_store) { \

    .attr = {.name = __stringify(_name), .mode = _mode },    \

    .show    = _show,                    \

    .store    = _store,                    \

}

所以,最终

DEVICE_ATTR(vbus, 0644, musb_vbus_show, musb_vbus_store);

会被替换成如下:

struct device_attribute dev_attr_vbus = { \

    .attr = {.name = __stringify(vbus), .mode = 0644 },    \

    .show    = musb_vbus_show,                    \

    .store    = musb_vbus_store,                    \

};

起始就是定义了一个device_attribute结构体,该结构体有3个成员:.attr、.show和.store。同时,.attr成员是一个内嵌结构体,又包含.name和.mode两个成员。

而device_attribute结构体的定义如下:

/* interface for exporting device attributes */

struct device_attribute {

    struct attribute    attr;

    ssize_t (*show)(struct device *dev, struct device_attribute *attr,

            char *buf);

    ssize_t (*store)(struct device *dev, struct device_attribute *attr,

             const char *buf, size_t count);

};

  评论这张
 
阅读(287)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017