首页 > 系统服务 > 详细

Linux 内核 struct device 设备

时间:2019-07-07 21:55:45      阅读:131      评论:0      收藏:0      [点我收藏+]

在最低层, Linux 系统中的每个设备由一个 struct device 代表:

 

struct device { struct device *parent; struct kobject kobj; char bus_id[BUS_ID_SIZE]; struct bus_type *bus; struct device_driver *driver; void *driver_data; void (*release)(struct device *dev); /* Several fields omitted */ };

 

有许多其他的 struct device 成员只对设备核心代码感兴趣. 但是, 这些成员值得了解: struct device *parent

327

 

设备的 "parent" 设备 -- 它所附着到的设备. 在大部分情况, 一个父设备是某种 总线或者主控制器. 如果 parent 是 NULL, 设备是一个顶层设备, 这常常不是你 所要的.

 

struct kobject kobj;

 

代表这个设备并且连接它到层次中的 kobject. 注意, 作为一个通用的规则, device->kobj->parent 等同于 device->parent->kobj.

 

char bus_id[BUS_ID_SIZE];

 

唯一确定这个总线上的设备的字符串. PCI 设备, 例如, 使用标准的 PCI ID 格式, 包含域, 总线, 设备, 和功能号.

 

struct bus_type *bus; 确定设备位于哪种总线.

struct device_driver *driver;

 

管理这个设备的驱动; 我们查看 struct device_driver 在下一节. void *driver_data;

一个可能被设备驱动使用的私有数据成员. void (*release)(struct device *dev);

当对这个设备的最后引用被去除时调用的方法; 它从被嵌入的 kobject 的 release 方法被调用. 注册到核心的所有的设备结构必须有一个 release 方法, 否则内核打印出慌乱的抱怨.

 

最少, parent, bus_id, bus, 和 release 成员必须在设备结构被注册前设置.

Linux 内核 struct device 设备

原文:https://www.cnblogs.com/fanweisheng/p/11147710.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!