装备linux26内核文件系统与装备模型文件系统

gdwkb ,Jul 28 13:21 , 文章教程 , 评论(0) , 引用(0) , 阅读(117) , 本站原创 | |
装备  对象  指针  函数  文件系统  计数器  目次  模型  内核  层次  结构  文件  节点  类型  有的  用户  子系统  属性  任务  系列  初始化  空间  相似  加载  资本  成员  组织  工作  旌旗  数据结构  音讯  要害  总线  适宜  时分  才华  细致  组件  标识  分明  称号  字符  模块  依据  主动  手段  核心  完整  消息  发生
linux26Nei∴He∴Wen∴Jian∴Xi∴Tong∴Yu∴Zhuang∴Bei∴Mo∴XingUdev装备文件系统linux2.6内核中!devfs被认为是过期的
1.       udev完整任务正在用户态任务!应用装备参与或者移除锁发送的热插拔时间任务正在热插拔时!装备的细致消息会由内核输进到位于/sys的sysfs文件系统!因为udev依据硬件动态更新装备文件!停止装备文件的创立和增除!所以正在/dev目次下就会只包含真正具有的装备Devfs和udev分明区分。采取devfs当壹个实在不具有的/dev节点被打开适宜会主动加载驱动!而udev认为正在装备被发觉时分才加载驱动模块
Sysfs文件系统与linux装备模型
Sysfs文件系统把连接到系统上的装备和总线组织成为壹个分级文件!能够由用户空间存取!向用户空间导出内核数据及其他们的属性!sysfs的壹个手段就是展现涉笔驱动模型中各组件的层次联系
装备模型中的要害数据结构
struct kobject  
char                    k_name。//
char                   nameKOBJ_NAME_LEN。//xx对象称号
struct kref             kref。//对象援用计数
struct list_head       entry。// 用于挂接给kobject对象到kset链表
struct kobject          parent。//指向父对象的指针
struct kset              kset。//所属kset的指针
struct kobj_type      ktype。指向对象类型描绘符的指针
struct dentry           dentry。//sysfs文件系统中与该对象对应文件节点出口

是形成装备治理才华的核心结构!壹个kobject对应于壹个sysfs文件系统的壹个目次
Kref成员完成对象使用计数器治理!供给kobject_get!kobject_put辨别用于增加和增加使用计数器!当援用计数器为0时!该对象使用资本被开释
Ktype指向kobj_type结构指针!标识该对象类型
Struct kobj_type  
void 。
struct sysfs_ops      sysfs_ops。
struct attribute        default_attrs。
。包含了开释kobject占用资本的release函数!指向sysfs操纵的sysfs_ops指针和sysfs文件系统默许属性列表
struct sysfs_ops  
ssize_t     。
ssize_t     。
。  辨别用于属性的读和写
壹系列的kobject操纵函数
Kobject_init用于初始kobject!设置kobject援用计数器为以!entry指向自身!其所属kset援用计数器加
1.
Kobject_add。//该函数将kobject对象参与linux装备层次!挂接到kobject对象到所属的kset的list链表中!增加kobject援用计数器!正在parent指向的目次下创立文件节点!并发动该类型内查对象的hotplug函数对应有kobject_del从linux装备层次中增除kobject对象
Kobject_register先调用kobject_init初始化!然后调用kobject_add!对应相同的是kobject_unregister
2.ksetkobject经过kset组织成为层次化的结构!kset是具有相同类型的kobject的汇合
struct kset  
struct subsystem     subsys。//所正在的子系统指针
struct kobj_type      ktype。//kset对象描绘符指针
struct list_head       list。//用于连接壹切object对象的链表头
struct kobject         kobj。//所以属于该kset的object对象的parent都指向该结构
struct kset_hotplug_ops hotplug_ops。//工作操纵集
。//与kobject相似!linux供给了壹系列的函数操纵kset!kset_init完成指定的kset初始化!kset_get和kset_put辨别增加和增加kset对象援用计数器!kset_add和kset_del函数把指定的kset对象参与装备层次和从此中增除!kset_register函数完成kset的注册和kset_unregister函数则完成kset的注销Kobject被创立或者增除时能发生event!kobject所属的kset能够过滤event或者许为用户空间增加音讯Kset的uevent_ops成员施行该kset工作汇合kset_uevent_ops指针
3.
struct subsystem  
struct kset             kset。
struct rw_semaphore     rwsem。
。//壹系列kset的汇合!描绘壹类子系统!如字符装备!块装备等等每个kset必须属于某个subsystem!设置kset结构中的subsys域指向指定的subsystem能够将kset参与到该subsystem!壹切挂接到同壹个subsystem的kset共享同壹个rwsem旌旗灯号量!用于同步访问kset中的链表内核供给相似kset和kobject的函数操纵subsystem操纵
1.       linux装备模型组件任壹装备都正在装备模型中有壹个device相对应
struct device  struct list_head g_list。
struct list_head node。
struct list_head bus_list。
struct list_head driver_list。
struct list_head intf_list。
struct list_head children。
struct device    parent。
char    nameDEVICE_NAME_SIZE。
char    bus_idBUS_ID_SIZE。
spinlock_t      lock。
atomic_t        refcount。Udev装备文件系统linux2.6内核中!devfs被认为是过期的 1.udev完整任务正在用户态任务!应用装备参与或者移除
飞扬黑客网  http://www.gdwkb.cn
发表评论

昵称

网址

电邮

打开HTML 打开UBB 打开表情 隐藏 记住我 [登入] [注册]