Linux装置模型

Linux设备模型
看LDD3中设备模型一章,觉得思维有些混乱。这里从整体的角度来理理思路。
本文从四个方面来总结一些内容:

1.底层数据结构:kobject,kset.
2.linux设备模型层次关系:bus_type,device,device_driver.
3.集成:PCI设备驱动模型实例及设备,设备驱动注册源码的简单分析.

4.面向对象的思想在linux设备模型中的应用分析.

?

一、底层数据结构:kobject,kset
先说说模型的意义:
总体来说是为了系统地管理所有设备。

?

?

kobject?

结合面向对象的思维。这个kobject属于最基础的结构,也就是最高抽象层(有点像java中的Cobject类)。任何一个设备模型如总线,设备,驱动都属于一个kobject?。在实现上这种派生关系就是在结构体中包含一个kobject的变量。

这个在层次上处理最顶层的kobject结构提供了所有模型需要的最基本的功能:
1?引用计数??用于内核维护其存在与消亡
2?sysfs表示??每个sys/下的对象对应着一个kobject。
3?热拔插事件处理。 处理设备的热拔插事件。

Kobjects 在内核中对应有一套申请,初始化,添加,注册,计数操作,释放等函数
struct?kobject?{
?const?char??*?k_name;?
?char???name[KOBJ_NAME_LEN];
?struct?kref??
kref;?计数
?struct?list_head?entry;?用于连接到同类kobjects的链表
?struct?kobject??*?parent;??用于实现层次,指向其父对象。
?struct?kset??*?kset;?用于实现层次,所属的集合
?struct?kobj_type?
*?ktype;??指向对象的类型。
?struct?dentry??</

Linux装置模型

相关文章:

你感兴趣的文章:

标签云: