几乎 Linux 驱动模型中的每一层都提供一个添加属性的接口, 并且总线层不例外. bus_attribute 类型定义在 <linux/device.h> 如下:

struct bus_attribute { struct attribute attr;

ssize_t (*show)(struct bus_type *bus, char *buf);

ssize_t (*store)(struct bus_type *bus, const char
*buf, size_t count);

};

我们已经见到 struct attribute 在 "缺省属性" 一节. bus_attribute
类型也包含 2 个方法来显示和设置属性值. 大部分在 kobject 之上的设备模型层以这种方式工作.

已经提供了一个方便的宏为在编译时间创建和初始化 bus_attribute 结构: BUS_ATTR(name, mode, show,
store);

这个宏声明一个结构, 产生它的名子通过前缀字符串 bus_attr_ 到给定的名子. 任何属于一个总线的属性应当明确使用
bus_create_file 来创建:

int bus_create_file(struct bus_type *bus, struct bus_attribute
*attr); 属性也可被去除, 使用:

void
bus_remove_file(struct bus_type *bus, struct bus_attribute *attr);

lddbus 驱动创建一个简单属性文件, 再次, 包含源码版本号. show 方法和
bus_attribute 结构设置如下:

static ssize_t show_bus_version(struct bus_type *bus,
char *buf)

{

return snprintf(buf, PAGE_SIZE, "%s\n",
Version);

}

static BUS_ATTR(version, S_IRUGO, show_bus_version, NULL); 创建属性文件在模块加载时间完成:

if (bus_create_file(&ldd_bus_type,
&bus_attr_version)) printk(KERN_NOTICE "Unable to create version
attribute\n");

这个调用创建一个属性文件(/sys/busldd/version)
包含 lddbus 代码的版本号.

最新文章

  1. ubuntu 12.04 sever下安装jre
  2. Android -- 使用图库文件并可以裁剪文件(ImageView)
  3. nodejs与模块soap的用法
  4. Windows 10和Visual Studio 2015 能给.Net方向的开发从业者带来什么?
  5. url编码 中文在url参数中传递,在请求头,响应头中传递,是如何编码的呢?
  6. redis在windows中的安装
  7. .NET Framework 4.5、4.5.1 和 4.5.2 中的新增功能
  8. iOS设备隐藏StateBar
  9. 什么是staging server
  10. Xcode7调试-b
  11. CAS SSO
  12. Thread类常用方法
  13. ABP实践学习
  14. GitHub提交代码后不显示用户名只显示邮箱
  15. 运行gedit报No protocol specified
  16. linux常用命令:ls命令
  17. [Codeforces708E]Student&#39;s Camp
  18. [T-ARA][For you]
  19. PHP 常用函数总结(一)
  20. selenium+python—实现基本自动化测试

热门文章

  1. Auto reloading enabled
  2. bzoj1060 时态同步
  3. nodeJs学习-11 multer中间件,解析post文件,上传文件
  4. ta-lib 里的蜡烛图形态函数源码
  5. Cython保护Python代码
  6. day10-02_多线程之进程与线程的pid
  7. mysql 查询当天、昨天、本周、上周、本月、上月、今年、去年数据
  8. win10提示 磁盘包含不是“PARTITION_BASIC_DATA_GUID&quot;类型的分区
  9. java的System.currentTimeMillis()如何转换成C#的DateTime.Now.Ticks?
  10. kwargs.pop是什么意思