2014年5月12日Kobject 、Kset 和 Subsy stem - 海王 - 博客园http://www.doczj.com/doc/93b5b6113b3567ec112d8a49.html/leav en/archiv e/2010/04/24/1719191.html 4/8件(2)4. Linux input 子系统 io 控制字段(2)

5. linux 内核定时器 tim er_list 详解(2) (2)把kobject 的 kset 成员指向目标kset 。

(3)将kobject 传递给下面的函数:int kobject_add(struct kobject *kobj); /*函数可能失败(返回一个负错误码),程序应作出相应地反应*/

内核提供了一个组合函数:

extern int kobject_register(struct kobject *kobj); /*仅仅是一个

kobject_init 和 kobject_add 的结合,其他成员的初始化必须在之前手动完成*/

当把一个kobject 从kset 中删除以清除引用时使用:

void kobject_del(struct kobject *kobj); /*是 kobject_del 和kobject_put 的结合*/

kset 在一个标准的内核链表中保存了它的子节点,在大部分情况下, 被包含的 kobjects 在它们的 parent 成员中保存指向 kset 内嵌的 kobject 的指

针,关系如下:

图表中的所有的被包含的 kobjects 实际上被嵌入在一些其他类型中, 甚至可能其他的 kset 。

kset 上的操作

ksets 有类似于kobjects 初始化和设置接口:

void kset_init(struct kset *kset);

int kset_add(struct kset *kset);

int kset_register(struct kset *kset);

void kset_unregister(struct kset *kset);

/*管理 ksets 的引用计数:*/

struct kset *kset_get(struct kset *kset);

void kset_put(struct kset *kset);

/* kset 也有一个名字,存储于嵌入的 kobject,因此设置它的名字用:*/kobject_set_nam e(&m y_set->kobj, "The nam e");

ksets 还有一个指针指向 kobj_type 结构来描述它包含的 kobject ,这个类型优先于 kobject 自身中的 ktype 。因此在典型的应用中, 在 struct

kobject 中的 ktype 成员被设为 NULL, 而 kset 中的ktype 是实际被使用的。

在新的内核里, kset 不再包含一个子系统指针struct subsystem *subsys , 而且subsystem 已经被kset 取代。

子系统

子系统是对整个内核中一些高级部分的表述。子系统通常(但不一定)出现在sysfs 分层结构中的顶层,内核子系统包括 block_subsys(/sys/block 块设备)、 devices_subsys(/sys/devices 核心设备层)以及内核已知的用于各种总线的特定子系统。

对于新的内核已经不再有subsystem 数据结构了,用kset 代替了。每个 kset 必须属于一个子系统,子系统成员帮助内核在分层结构中定位 kset 。 /*子系统通常用以下的宏声明:*/

decl_subsys(nam e, struct kobj_type *type, struct

kset_uevent_ops * uevent_ops);

/*子系统的操作函数:*/

linux kset subsystem 3.10内核,Kobject、Kset 和 Subsystem相关推荐

  1. linux kset subsystem 3.10内核,Linux设备模型分析之kset(基于3.10.1内核)

    作者:刘昊昱 内核版本:3.10.1 一.kset结构定义 kset结构体定义在include/linux/kobject.h文件中,其内容如下: 142/** 143 * struct kset - ...

  2. 镜像安装linux选择内核版本,在CentOS和Ubuntu中安装Linux Kernel 4.13.10

    Linus Torvalds 在 10 月 17 日星期五正式发布了稳定版 Linux Kernel 4.13.10,这个最新版本发布了新功能,进行了诸多修复和问题改进.下面将向大家介绍在 CentO ...

  3. linux内核中kset是什么意思,Linux内核之设备驱动-底层数据结构kobject/kset

    Linux内核之设备驱动-底层数据结构kobject/kset kobject kobject是组成device.driver.bus.class的基本结构.如果把前者看成基类,则后者均为它的派生产物 ...

  4. Linux设备模型 kobject kset

    http://www.wowotech.net/device_model/13.html 1. 前言 在"Linux内核的整体架构"中,蜗蜗有提到,由于Linux支持世界上几乎所有 ...

  5. deepin编译Linux内核,为Deepin编译Linux 5.10内核的悲伤故事经历:从入门到卸载

    简介 目的 解决Linux Deepin在更新内核到5.10后无法使用蓝牙的问题. 硬件:联想小新13 Pro 2020 AMD R5 4600U OS: win 10 + deepin 20 原因 ...

  6. Linux内核可自己增加吗6,一篇最完善可行的Linux 2.6.10内核升级文档Linux -电脑资料...

    一篇最完善可行的Linux 2.6.10内核升级文档 huangki | 05 三月, 2005 23:22 Linux 2.6.10 kernel installation 做一件事情,首先要知道自 ...

  7. Linux Kernel 3.10内核源码分析--块设备层request plug/unplug机制

    一.基本原理 Linux块设备层使用了plug/unplug(蓄流/泄流)的机制来提升IO吞吐量.基本原理为:当IO请求提交时,不知直接提交给底层驱动,而是先将其放入一个队列中(相当于水池),待一定时 ...

  8. Linux kernel 3.10内核源码分析--TLB相关--TLB概念、flush、TLB lazy模式

    一.概念及基本原理 TLB即Translation Lookaside Buffer,是MMU中的一种硬件cache,用于缓存页表,即缓存线性地址(虚拟地址)到物理地址的映射关系. 如果没有TLB,那 ...

  9. Linux kernel 3.10内核源码分析--进程上下文切换

    一.疑问 进程调度时,当被选中的next进程不是current进程时,需要进行上下文切换. 进行上下文切换时,有一些问题不太容易理解,比如: 1.进程上下文切换必然发生在内核态吗? 2.上下文切换后原 ...

最新文章

  1. iOS 开发之 pdf 文档的加载与浏览的 4 种方式
  2. 30天敏捷生活(5):形成个人价值观
  3. linux ping IP地址与telnet 测试IP端口
  4. Altera FPGA管脚弱上拉电阻详细设置方法
  5. UbuntuServer16.04LTS版怎样修改数据源为国内数据源
  6. superset设置自动刷新
  7. Java基础---变量(三)
  8. error: reference to non-static member function must be called sort(nums.begin(),nums.end(),cmp1)
  9. oracle中的数据对象
  10. FormData对象
  11. mootools-1.2.1-core.js在IE中显示不了图像翻页
  12. 等保测评机构推荐证书撤销,纳入国家认证体系
  13. intel ax200ngw刷killer 1650x教程
  14. 局部保留投影算法(LPP)(Locality Preserving Projections)详解
  15. P1419 寻找段落
  16. 微信小程序登录+坐标定位显示km数
  17. Python基础知识 2022-11-14 ★ 小结 43-50 字典_集合
  18. [翻译]机器学习之啤酒与纸尿裤-Association Rules and Apriori algorithm
  19. Hexo博客添加搜索功能
  20. 程序员写代码兼职副业赚钱之路

热门文章

  1. 为什么技术人一定要懂点“可信计算”?
  2. 如何通过Dataworks禁止MaxCompute 子账号跨Project访问
  3. 【阿里云 MVP 月度分享】宋亚奇——应用MaxCompute实现电力设备监测数据的批量特征分析...
  4. 中国首部智能交通微纪录片正式发布 探讨交通强国高质量发展路径
  5. 真正的程序员,从来不会告诉你这些事!
  6. 创业公司的容器化之路
  7. c语言水仙花数(输入判断),用c语言判断一个数是否为水仙花数?
  8. SSL/TLS协议信息泄露漏洞(CVE-2016-2183)【原理扫描】 服务器支持 TLS Client-initiated 重协商攻击(CVE-2011-1473)【原理扫描】
  9. ORACLE添加字段、删除字段
  10. JobDataMap 更新_04