Linux 内核设备驱动

Linux 内核设备驱动,第1张

概述设备模型跟踪所有对系统已知的驱动. 这个跟踪的主要原因是使驱动核心能匹配驱动和新 设备. 一旦驱动在系统中是已知的对象, 但是, 许多其他的事情变得有可能. 设备驱动可 输出和任何特定设备无关的信息和配置变量, 例如:   驱动由下列结构定义:   struct device_driver { char *name; struct bus_type *bus; struct kobject kob

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

 

驱动由下列结构定义:

 

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 ) 指向一套缺省属性,对所有关联到这个总线 的驱动都创建.

总结

以上是内存溢出为你收集整理的Linux 内核设备驱动全部内容,希望文章能够帮你解决Linux 内核设备驱动所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/1017284.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存