日期:2014-05-16  浏览次数:20545 次

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??

友情链接: 爱易网 云虚拟主机技术 云服务器技术 程序设计技术 开发网站 APP开发教程
Copyright © 2013-2024 爱易网页 当前在线:486人  网站在36秒内访问总人数:486人 当前 23.57%  粤ICP备18100884号-2