日期:2014-05-16 浏览次数:20545 次
?
一、底层数据结构:kobject,kset
先说说模型的意义:
总体来说是为了系统地管理所有设备。
?
?
kobject?
结合面向对象的思维。这个kobject属于最基础的结构,也就是最高抽象层(有点像java中的Cobject类)。任何一个设备模型如总线,设备,驱动都属于一个kobject?。在实现上这种派生关系就是在结构体中包含一个kobject的变量。
这个在层次上处理最顶层的kobject结构提供了所有模型需要的最基本的功能: Kobjects 在内核中对应有一套申请,初始化,添加,注册,计数操作,释放等函数
1?引用计数??用于内核维护其存在与消亡
2?sysfs表示??每个sys/下的对象对应着一个kobject。
3?热拔插事件处理。 处理设备的热拔插事件。
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??