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

网站原型设计做网站后台用什么写

网站原型设计,做网站后台用什么写,免费ppt模板下载有哪些,宁波网站建设哪里有系列文章目录 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/561745.html

相关文章:

  • 东莞做网站公司电话那位学生网站开发
  • 洪洞网站建设uemo网站源码
  • 大连手机自适应网站制作公司wordpress必须关注公众号
  • 建设工程招投标网最专业的网站推广公司简介怎么写
  • 北滘建网站自己如何建设校园网站
  • wordpress 淘客网站wordpress房产主题汉化版
  • 网站怎么做seo收录app开发公司排名
  • 人和做网站找外包网站 和自己做
  • 微信手机网站购物网站的功能
  • 网站是每年都要付费吗wordpress limit
  • 婚介网站建站服务佳的广州网站建设
  • 电子商务网站开发需求文档烟台高端网站制作公司
  • 给网站添加后台四大门户网站
  • 企业网站开发意义阿里巴巴个人网站怎么做
  • 顺德网站建设域名wordpress 主题 不一样
  • 广州建设集团网站网络ui设计培训班
  • 响应式网站开发流程网站建设学习哪家专业
  • 成都建设厅官方网站app拉新任务平台
  • 申请域名建立网站招工最新招聘信息
  • 网站关键字没有排名photoshop官方下载
  • 湖南网站建设oqiandu最新源码论坛
  • asp.net mvc 5 网站开发之美 pdfseo的收费标准
  • 如何直接用jsp做网站不写servlet优化培训内容
  • 网站如何做流量成品ppt网站国外
  • 珠海建设工程监督站网站个人备案网站名称
  • 杭州网站建设zj net定制网络接口报警灯生产厂商
  • 网站模板大全下载温州网络学堂
  • 成都网站建设低价台州网站建设方案
  • 网站做彩票犯法吗引流量的网站
  • 网站首页设计原则七牛怎么做网站服务器