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

网站开发哪些做网页需要的素材

网站开发哪些,做网页需要的素材,做网站一个人可以吗,宁波高端模板建站系列文章目录 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 连接在一起。

http://www.yayakq.cn/news/886577/

相关文章:

  • 上海建设厅网站查询自助开通网站
  • 网站开发的方案株洲广告公司找v信hyhyk1做推广好
  • 南陵网站建设国家住房和城乡建设部中国建造师网站
  • 石家庄专门做网站的公司网站运营之怎样做好seo优化
  • 优秀的摄影作品网站seo商城
  • 定制化网站开发的好处建工网校论坛
  • 如何做网站的教程二维码百度一下免费下载安装
  • 做彩票网站都是怎么拉人的免费企业网站建设免费
  • 陕西建设注册中心网站网站悬浮窗
  • seo爱站网7k7k网页游戏
  • 电子科技网站模板福州网站
  • 网站死链接怎么删除wordpress主题aware
  • 什么网站免费做简历模板郑州企业建站免费咨询
  • 国外做ppt网站高端的平面设计网站
  • 江苏省高职重点专业群建设网站html5网站开发环境的搭建
  • 网站没有被收录张家港安监站网址
  • 全国网站备案咨询电话河南平台网站建设哪里有
  • 有效方法的小企业网站建设中小微企业名录查询
  • 湖州企业做网站wordpress分类页副标题
  • 网站建设的流程和内容长沙互联网公司招聘
  • 延边网站开发depawo百度上可以做中英文网站吗
  • wordpress 作品集网站可以定制东西的软件
  • 搜索引擎网站推广法o2o电子商务网站策划书
  • 担保公司网站建设方案一个ip 做2个网站
  • 展示型企业网站制作费用做网站时,404网页如何指向
  • 滨州建网站多新闻怎么做扁平网站
  • 大连网站制作开发盘龙区网站建设外包
  • 淄网站做网站wordpress 默认端口
  • 农业信息网站建设方案网站建设的面试要求
  • 网站建设科技公司一个网站有哪几种漏洞