- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
linux设备模型详解1
linux设备模型详解1
2011-01-10 16:32
转载自 csdeny
最终编辑 csdeny
Linux 2.6内核的一个重要特色是提供了统一的内核设备模型。随着技术的不断进步,系统的拓扑结构越来越复杂,对智能电源管理、热插拔以及plug and play的支持要求也越来越高,2.4内核已经难以满足这些需求。为适应这种形势的需要,2.6内核开发了全新的设备模型。1. Sysfs文件系统Sysfs文件系统是一个类似于proc文件系统的特殊文件系统,用于将系统中的设备组织成层次结构,并向用户模式程序提供详细的内核数据结构信息。其顶层目录主要有:Block目录:包含所有的块设备Devices目录:包含系统所有的设备,并根据设备挂接的总线类型组织成层次结构Bus目录:包含系统中所有的总线类型Drivers目录:包括内核中所有已注册的设备驱动程序Class目录:系统中的设备类型(如网卡设备,声卡设备等)2. 内核对象机制关键数据结构2.1 kobject内核对象Kobject 是Linux 2.6引入的新的设备管理机制,在内核中由struct kobject表示。通过这个数据结构使所有设备在底层都具有统一的接口,kobject提供基本的对象管理,是构成Linux 2.6设备模型的核心结构,它与sysfs文件系统紧密关联,每个在内核中注册的kobject对象都对应于sysfs文件系统中的一个目录。Kobject结构定义为:struct kobject {char * k_name; 指向设备名称的指针char name[KOBJ_NAME_LEN]; 设备名称struct kref kref; 对象引用计数struct list_head entry; 挂接到所在kset中去的单元struct kobject * parent; 指向父对象的指针struct kset * kset; 所属kset的指针struct kobj_type * ktype; 指向其对象类型描述符的指针struct dentry * dentry; sysfs文件系统中与该对象对应的文件节点路径指针};其中的kref域表示该对象引用的计数,内核通过kref实现对象引用计数管理,内核提供两个函数kobject_get()、kobject_put()分别用于增加和减少引用计数,当引用计数为0时,所有该对象使用的资源将被释放。Ktype 域是一个指向kobj_type结构的指针,表示该对象的类型。Kobj_type数据结构包含三个域:一个release方法用于释放kobject占 用的资源;一个sysfs_ops指针指向sysfs操作表和一个sysfs文件系统缺省属性列表。Sysfs操作表包括两个函数store()和 show()。当用户态读取属性时,show()函数被调用,该函数编码指定属性值存入buffer中返回给用户态;而store()函数用于存储用户态 传入的属性值。2.2 kset内核对象集合Kobject通常通过kset组织成层次化的结构,kset是具有相同类型的kobject的集合,在内核中用kset数据结构表示,定义为:struct kset {struct subsystem * subsys; 所在的subsystem的指针struct kobj_type * ktype; 指向该kset对象类型描述符的指针struct list_head list; 用于连接该kset中所有kobject的链表头struct kobject kobj; 嵌入的kobjectstruct kset_hotplug_ops * hotplug_ops; 指向热插拔操作表的指针};包 含在kset中的所有kobject被组织成一个双向循环链表,list域正是该链表的头。Ktype域指向一个kobj_type结构,被该 kset中的所有kobject共享,表示这些对象的类型。Kset数据结构还内嵌了一个kobject对象(由kobj域表示),所有属于这个kset 的kobject对象的parent域均指向这个内嵌的对象。此外,kset还依赖于kobj维护引用计数:kset的引用计数实际上就是内嵌的 kobject对象的引用计数。2.3 subsystem内核对象子系统Subsystem是一系列kset的集合,描述系统中某一 类设备子系统,如block_subsys表示所有的块设备,对应于sysfs文件系统中的block目录。类似的,devices_subsys对应于 sysfs中的devices目录,描述系统中所有的设备。Subsys
您可能关注的文档
最近下载
- TSZEIA 014-2023 二手手机出口质量要求.pdf VIP
- 2025年高考湖南卷物理真题 含答案.pdf VIP
- 个股动量效应的识别及“球队硬币”因子构建.pdf VIP
- 微机型母线保护分析与应用.pdf VIP
- (人教版)一年级上册科学 观察物体教案.doc VIP
- 学校EPC工程项目实施的重难点分析及对策.pdf VIP
- 典型事故五:内蒙古泰和煤焦化集团有限公司“4.8”爆炸事故.pdf VIP
- 2020款上汽通用别克君越_汽车使用手册用户操作图解驾驶车主车辆说明书电子版.pdf
- 基于新课标“教学评”一体化的小学语文教学设计与实施 培训课件.pptx
- 陶艺课程--校本特色课程-专题讲座.pptx VIP
文档评论(0)