当前位置: 首页 > wzjs >正文

学校网站用什么模板好广州百度seo

学校网站用什么模板好,广州百度seo,代理平台微信号,莱芜中考网站系列文章目录 Linux设备框架:kset与kobject基本介绍 [link] Linux设备框架:kset与kobject源码分析 [link] kset与kobject基本介绍 一、前言二、kobject、kset和设备的关系2.1 kset 结构体2.2 kobject 结构体 三、总结 一、前言 Linux 设备模型如同一座拥…

系列文章目录
Linux设备框架:kset与kobject基本介绍 [link]
Linux设备框架:kset与kobject源码分析 [link]


kset与kobject基本介绍

  • 一、前言
  • 二、kobject、kset和设备的关系
    • 2.1 kset 结构体
    • 2.2 kobject 结构体
  • 三、总结


一、前言

Linux 设备模型如同一座拥有众多楼层(总线)和房间(设备)的摩天大楼,由内部主体(kset、kobject)和外部装饰(sysfs文件系统)构成。

kset和kobject是大楼主体的承重柱、横梁或者墙体,构成整座大楼框架,组织各楼层、房间。kobject连接各房间、楼层的通道,kset则对各楼层、房间按功能类型划分区域。sysfs文件系统是连接摩天大楼内外的纽带,它将摩天大楼内部各楼层、房间之间的层次关系展示给外面的世界(用户空间的程序),同时向外界提供了与大楼内部互动通道。

在驱动开发过程中,很多驱动开发者初遇 Linux 设备模型中的kset、kobject时,觉得非常抽象,难以理解。担心会因对其理解不透彻而影响驱动开发,因此而困感。

其实,对于顾客来说,在平常的逛街购物过程中,摩天大楼外部装饰(sysfs文件系统)和内部的楼层、房间(总线、设备、驱动)才是最常接触的。熟悉了楼层功能、房间布局就能在大楼中熟练的完成购物活动,顾客无需在意隐藏在内部的承重住、横梁(kset、kobject)是怎么设计的,这些一点也不影响逛街购物。

同理,在驱动开发过程中,驱动开发人员掌握了总线、设备、驱动,就能完成驱动开发任务。而内核中的 kset 和 kobject 是被封装在内部的一套管理设备的机制。执行总线、设备的相关的接口函数自动会完成 kset 和 kobject 层级的操作。因此,暂时对 kset 和 kobject 的不理解,也无需担心会影响驱动开发。

二、kobject、kset和设备的关系

Linux 设备框架引入集合的概念,用来管理同类型设备。所有同类设备通过链表组织在一起,形成一个集合。下面是设备结构体,包含了 kobject 成员,Linux设备框架中就是通过该成员来管理每一个设备的。

struct device {struct kobject kobj;......
};

2.1 kset 结构体

kset 的结构体比较简单,如下所示。它拥有 list 和 kobject 成员,Linux设备框架通过前者来管理集合中的所有设备,用后者来管理相关联的集合。

struct kset {struct list_head list;spinlock_t list_lock;struct kobject kobj;const struct kset_uevent_ops *uevent_ops;
} __randomize_layout;

其中,list成员是设备链表的头节点;kobj成员是用来管理集合的kobject对象,和device中的kobject对象作用一样。

2.2 kobject 结构体

Kobject 的每一项成员都和设备管理框架相关,以下给出了 kobject 结构体定义:

struct kobject {const char		   *name;struct list_head   entry;struct kobject     *parent;struct kset        *kset;struct kobj_type   *ktype;struct kernfs_node *sd; /* sysfs directory entry */struct kref        kref;......
};
  • const char *name
    kobject 对象的名称,如果其拥有者是kset,则表示kset实例的名字;如果其拥有者是device,则表示设备的名字。如果该 kobject 对象的拥有者加入到内核,那么在sysfs文件系统中会创建一个以该名字命名的目录。

  • struct list_head entry
    用来将该 kobject 对象的拥有者通过该成员以链表的形式被管理。

  • struct kobject *parent;
    该成员指向该 kobject 对象拥有者的父对象,构建了各拥有者之间的层级关系。在sysfs文件系统中,该层级关系以 kobject 对象名字命名的目录间的层级关系呈现。

  • struct kset *kset;
    指向该 kobject 对象拥有者的所属集合,即kset实例,表示该拥有者属于哪个集合。

  • struct kobj_type *ktype
    定义了 kobject 对象的一组 sysfs 文件系统相关的操作函数和属性。其中,属性由内部成员struct attribute **default_attrs表示,同样该属性也会反映到sysfs文件系统中,以文件的形式在 kobject 对象名字命名的目录下呈现。
    通过该成员,让 C 中的 struct 数据类型具备了C++中 class 类型的某些特点,这里体现了基于C语言面向对象设计思想。各上层对象通过继承 kobject 的方式拥有 ktype,不同的 kobject 对象继承者会有不同的 ktype,用以体现不同拥有者的特质差异。

  • struct kernfs_node *sd
    用来指向该 kobject 对象在sysfs 文件系统中对应目录的实例,即以 kobject 对象名字命名的目录。

  • struct kref kref
    该成员用来表示 kobject 对象(对象拥有者)的引用计数,其核心数据是一原子型变量。内核通过该成员追踪kobject 对象的生命周期。

三、总结

Linux 设备框架中,将同类型的设备归类为一个集合,一个集合中拥有一个 kset 实例和若干设备,且以链表的形式管理。Kset 实例通过 kset.list 成员成为链表头节点;各设备通过 device.kobj.entry 成员以子节点身份挂在链表上。同样,父子关系的集合通过 kset.kobj.parent 连接在一起,父子关系的设备通过 device.kobj.parent 关联。详细介绍请阅读:《kset与kobject源码分析》。

1、以 devices_kset 为例一个集合的管理架构如下:
请添加图片描述

2、在 sysfs 文件系统中,集合和设备创建的目录结构。
请添加图片描述

http://www.dtcms.com/wzjs/388216.html

相关文章:

  • 改织梦模板做网站淘宝关键词优化技巧教程
  • 广州专业网络推广公司专业seo优化推广
  • 禁用wordpress裁剪福州排名seo公司
  • 免费建立自己微网站吗网站推广包括
  • 怎么免费建设网站石家庄谷歌seo
  • 汉口制作网站seo公司怎么推广宣传
  • 重庆网站产品推广北京seo公司公司
  • 河南网站开发培训疫情防控最新数据
  • 站长爱it网络营销方案案例范文
  • 精准营销数据网站seo在线诊断
  • 以百度云做网站空间找平台推广
  • wordpress电影主题博客51趣优化网络seo工程师教程
  • 山西住房和城乡建设委员会网站企业qq下载
  • 做家电家具回收用哪个网站好百度指数怎么查询
  • 微信小程序视频网站开发教程免费网站搭建平台
  • blog网站开发实例网络营销五个特点
  • 湖北网站建设公司app拉新平台
  • 网站建设摘要如何联系百度推广
  • 哪里医院做无痛人流便宜 咨询网站在线seo查询工具
  • 苏州网页设计费用win10优化大师是官方的吗
  • 邢台网站制作哪里做今天今日头条新闻
  • 交友系统网站建设全国疫情最新情况公布
  • 自己做下载网站吗成都本地推广平台
  • 南皮哪有做网站的河南seo快速排名
  • 自适应网站导航怎么做客户管理软件哪个好用
  • 商业设计网站推荐百度seo怎么关闭
  • 专门找人做软件的网站百度移动端排名软件
  • wordpress防垃圾评论搜索引擎优化员简历
  • 自己的免费网站空间网络推广发帖网站
  • 东莞网络公司现状做网络优化哪家公司比较好