设备模型跟踪所有对系统已知的驱动. 这个跟踪的主要原因是使驱动核心能匹配驱动和新 设备. 一旦驱动在系统中是已知的对象, 但是, 许多其他的事情变得有可能. 设备驱动可 输出和任何特定设备无关的信息和配置变量, 例如:

驱动由下列结构定义:

struct device_driver { char *name;

struct bus_type *bus; struct kobject kobj; struct list_head devices;

int (*probe)(struct device *dev); int (*remove)(struct device *dev);

void (*shutdown) (struct device *dev);

};

再一次, 几个结构成员被忽略( 全部内容见 <linux/device.h> ). 这里, name 是驱动的 名子( 它在 sysfs 中出现 ), bus 是这个驱动使用的总线类型, kobj 是必然的 kobject, devices 是当前绑定到这个驱动的所有设备的列表, probe 是一个函数被调用来查询一个 特定设备的存在(以及这个驱动是否可以使用它), remove 当设备从系统中去除时被调用, shutdown 在关闭时被调用来关闭设备.

使用 device_driver 结构的函数的形式, 现在应当看来是类似的(因此我们快速涵盖它 们). 注册函数是:

int driver_register(struct device_driver *drv); void driver_unregister(struct device_driver *drv);

通常的属性结构在:

struct driver_attribute { struct attribute attr;

ssize_t
(*show)(struct device_driver *drv, char *buf); ssize_t (*store)(struct
device_driver *drv, const char *buf, size_t count);

};

DRIVER_ATTR(name,
mode, show, store);

以及属性文件以通常的方法创建:

int
driver_create_file(struct device_driver *drv, struct driver_attribute *attr);
void driver_remove_file(struct device_driver *drv, struct driver_attribute
*attr);

bus_type 结构含有一个成员( drv_attrs ) 指向一套缺省属性, 对所有关联到这个总线 的驱动都创建.

最新文章

  1. JSON and Microsoft Technologies(翻译)
  2. Docker 介绍以及其相关术语、底层原理和技术
  3. 字符串分割函数 STRTOK &amp; STRTOK_R (转)
  4. xml之Schema架构
  5. 一个有意思的js实例,你会吗??[原创]
  6. 使用WebRTC实现电脑与手机通过浏览器进行视频通话
  7. JavaScript引用类型之Array数组的拼接方法-concat()和截取方法-slice()
  8. contact form
  9. react.JS基础
  10. c# API接收Base64转图片
  11. Scrapy中选择器的用法
  12. 你(可能)不知道的web api
  13. 数组中的逆序对(Java实现)
  14. Codeforces Round #355 (Div. 2) A. Vanya and Fence 水题
  15. 关于MySQL的几个命令之load
  16. Gradle中的SourceSet理解
  17. Windows Server、 Windows 区别
  18. input只读属性readonly和disabled的区别
  19. TQ2440系统介绍入门 、linux系统目录结构
  20. python函数式编程之返回函数、匿名函数、装饰器、偏函数学习

热门文章

  1. linux 下安装编译配置 QT
  2. cmakelists.txt中配置openg环境出现: undefined reference to symbol &#39;glLightfv&#39;
  3. 如何在“代码”视图中工作并充分利用 Dreamweaver 的编码功能。如 Emmet 缩写
  4. 【Mysql的那些事】数据库之ORM操作
  5. Libevent:3创建event_base
  6. JavaWeb登录、注销、退出、记住用户名和密码
  7. Save and Load from XML
  8. Python深入:Distutils发布Python模块
  9. HZOJ 回家
  10. @noi - 172@ 追捕大象