目次 装备 对象 内核 数据结构 指针 文件系统 函数 结构 类型 系统 定义 属性 模型 层次 组织 用户 旌旗 称号 子系统 机制 次序 愈来愈 总线 相似 资本 需求 两个 文件 系列 别的 拓扑 要害 繁杂 节点 初始化 手艺 中用 分歧 严密 双向 底层 详解 细致 形势 依据 接口 道路 形式 满意
linuxZhuang∴Bei∴Mo∴Xing∴Shu∴Ju∴Jie∴Gou∴Lian∴Xi∴Xiang∴JieLINUX装备模型数据结构联系详解
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 nameKOBJ_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。 嵌进的kobject
struct kset_hotplug_ops hotplug_ops。 指向热插拔操纵表的指针
。
包 含正在kset中的壹切kobject被组织成壹个双向循环链表!list域正是该链表的头Ktype域指向壹个kobj_type结构!被该 kset中的壹切kobject共享!表现这些对象的类型Kset数据结构还内嵌了壹个kobject对象!壹切属于这个kset 的kobject对象的parent域均指向这个内嵌的对象别的!kset还依靠于kobj保护援用计数kset的援用计数实践上就是内嵌的 kobject对象的援用计数
2.3 subsystem内查对象子系统
Subsystem是壹系列kset的汇合!描绘系统中某壹 类装备子系统!如block_subsys表现壹切的块装备!对应于sysfs文件系统中的block目次相似的!devices_subsys对应于 sysfs中的devices目次!描绘系统中壹切的装备Subsystem由struct subsystem数据结构描绘!定义为
struct subsystem
struct kset kset。 内嵌的kset对象
struct rw_semaphore rwsem。 互斥访问旌旗灯号量
。
每 个kset必须属于某个subsystem!经过设置kset结构中的subsys域指向指定的subsystem能够将壹个kset参与到该 subsystem壹切挂接到同壹subsystem的kset共享同壹个rwsem旌旗灯号量!用于同步访问kset中的链表
3. 内查对象机制主要相干函数
针对内查对象分歧层次的数据结构!linux 2.6内核定义了壹系列操纵函数!定义于lib/kobject.c文件中
3.1 kobject相干函数
void kobject_init
kobject初始化函数设置kobject援用计数为1!entry域指向自身!其所属kset援用计数加1
int kobject_set_name
设置指定kobject的称号LINUX装备模型数据结构联系详解 Linux 2.6内核的壹个主要特征是供给了壹致的内核装备模型随着手艺的不时提
飞扬黑客网 http://www.gdwkb.cn
linuxZhuang∴Bei∴Mo∴Xing∴Shu∴Ju∴Jie∴Gou∴Lian∴Xi∴Xiang∴JieLINUX装备模型数据结构联系详解
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 nameKOBJ_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。 嵌进的kobject
struct kset_hotplug_ops hotplug_ops。 指向热插拔操纵表的指针
。
包 含正在kset中的壹切kobject被组织成壹个双向循环链表!list域正是该链表的头Ktype域指向壹个kobj_type结构!被该 kset中的壹切kobject共享!表现这些对象的类型Kset数据结构还内嵌了壹个kobject对象!壹切属于这个kset 的kobject对象的parent域均指向这个内嵌的对象别的!kset还依靠于kobj保护援用计数kset的援用计数实践上就是内嵌的 kobject对象的援用计数
2.3 subsystem内查对象子系统
Subsystem是壹系列kset的汇合!描绘系统中某壹 类装备子系统!如block_subsys表现壹切的块装备!对应于sysfs文件系统中的block目次相似的!devices_subsys对应于 sysfs中的devices目次!描绘系统中壹切的装备Subsystem由struct subsystem数据结构描绘!定义为
struct subsystem
struct kset kset。 内嵌的kset对象
struct rw_semaphore rwsem。 互斥访问旌旗灯号量
。
每 个kset必须属于某个subsystem!经过设置kset结构中的subsys域指向指定的subsystem能够将壹个kset参与到该 subsystem壹切挂接到同壹subsystem的kset共享同壹个rwsem旌旗灯号量!用于同步访问kset中的链表
3. 内查对象机制主要相干函数
针对内查对象分歧层次的数据结构!linux 2.6内核定义了壹系列操纵函数!定义于lib/kobject.c文件中
3.1 kobject相干函数
void kobject_init
kobject初始化函数设置kobject援用计数为1!entry域指向自身!其所属kset援用计数加1
int kobject_set_name
设置指定kobject的称号LINUX装备模型数据结构联系详解 Linux 2.6内核的壹个主要特征是供给了壹致的内核装备模型随着手艺的不时提
飞扬黑客网 http://www.gdwkb.cn


