ldd3读书笔记#1 驱动程序模型

来源:互联网 发布:js让另一个页面刷新 编辑:程序博客网 时间:2024/04/28 10:51
kobejct, kset与kobj_type及其相应的操作,是sysfs文件系统的底层实现细节:它展现的是sysfs的目录结构。

bus是连接CPU与设备的设备,所以一个bus不仅出现在/sys/bus目录下,还要出现在device目录下。bus还维护两人个kset: driver和device,分别对应到总线驱动与设备列表。

device对应到bus,device还会出现在Device树中,device树描述了整个硬件系统的拓朴。device还会与它的driver对应。另外,device还可能会出现在class下面。这其实是说明了device的各种性质:它挂在哪个总线上,它接入电脑的拓朴是什么样的,它的驱动程序是谁,它属于哪种设备。

driver对应到总线,它还可以引用到自身支持的设备。

class是类型描述,实现对于设备缺省功能的支持,属于某一类型的设备都在同一class下。

设备与驱动的匹配:实际是hotplug做的事情。
kobject的hotplug
bus的match/add/hotplug
driver的probe/remove/shutdown
class的hotplug
这里面的有些是实现相关的,有些是kobject体系固定了的。比如,device_register时,会调用到koject的hotplug, 这会依次调用到bus的hotplug,然后会调用到用户态的module load,以加载驱动模块,然后调用到bus的match, bus的match会调用到驱动程序的probe.

加上ldd3上的pci图片作个例子


0 0
原创粉丝点击