内核对象kobject和sysfs(1)——概述

问题:

在走读驱动代码时,经常看见kref,kobj,sysfs这些结构,这些结构到底有什么作用?如何理解并使用这些结构呢?这将在接下来的这一系列文章中说明。


在详细介绍之前,先简单给出个人对各个结构的理解,但暂时不对这些结论做出解释。可以在看完后面几篇后,再回过头来看本篇。

(1)kref实现了资源的智能管理,调用者,不必关心资源的释放问题,系统会在合适的时机释放资源;

(2)kobj是kref的封装,利用了kref的功能,构成了sysfs里的基本目录,并提供内核到用户的接口,接口可以自定义;

(3)device是kobj的进一步封装,使其除了具有内核对象的一切属性之外,还有了和设备相关的一些特性。不过这相关的文章,不在这一系列中叙述,将在《统一设备模型》系列文章中介绍。

(4)sysfs是一个内核向用户展示自己的地方,按照开发者的约定展示给用户合适的属性,并允许用户对某些熟悉进行修改;

从上面的介绍,可以看出,内核代码虽然是C语言编写,但是充分体现了面向对象的思想:

(1)kref到kobj再到device的层层封装,体现了面向对象的封装和继承;

(2)用户编写驱动时候,对device有着各自不同的封装,甚至内核的一些其他子系统都采用不同的方式对其进行封装,这无不体现出了多态。

本系列文章分为四个部分。第一部分即为本篇概述。

第二篇为介绍kref,第三篇为介绍kobj,第四篇为介绍kset。

其中kset中包含的内容很多,比如uevent、热插拔等知识在后续别的系列中详细分析。

内核对象kobject和sysfs(1)——概述的更多相关文章

  1. 内核对象kobject和sysfs(4)——kset分析

    内核对象kobject和sysfs(4)--kset分析 从狭义上来说,kset就是kobj的一个再封装而已.在封装之后,提供了针对kset之下所有kobj统一管理的一些方法. 我们还是从结构说起: ...

  2. 内核对象kobject和sysfs(3)——kobj分析

    内核对象kobject和sysfs(3)--kobj分析 在分析kobj之前,先总结下kobj的功能: 实现结构的动态管理: 实现内核对象到sysfs的映射: 实现自定义属性的管理. 关注一下kobj ...

  3. 内核对象kobject和sysfs(2)——kref分析

    内核对象kobject和sysfs(2)--kref分析 在介绍ref之前,先贴上kref的结构: struct kref { atomic_t refcount; }; 可以看到,kref只是包含一 ...

  4. sysfs - 用于导出内核对象(kobject)的文件系统

    sysfs - _The_ filesystem for exporting kernel objects.sysfs - 用于导出内核对象(kobject)的文件系统Patrick Mochel & ...

  5. Linux 内核文档翻译 - kobject.txt

    原文地址:Linux 内核文档翻译 - kobject.txt 作者:qh997 Everything you never wanted to know about kobjects, ksets, ...

  6. Linux内核文档翻译——kobject.txt

    ==================================================================== Everything you never wanted to ...

  7. xenomai内核解析---内核对象注册表—xnregistry(重要组件)

    1. 概述 上篇文章xenomai内核解析--同步互斥机制(一)--优先级倒置讲到,对于所有内核对象: xnregistry:保存内核对象,提供内核对象存储和快速检索. xnsynch:资源抽象,提供 ...

  8. windows核心编程---第八章 使用内核对象进行线程同步

    使用内核对象进行线程同步. 前面我们介绍了用户模式下线程同步的几种方式.在用户模式下进行线程同步的最大好处就是速度非常快.因此当需要使用线程同步时用户模式下的线程同步是首选. 但是用户模式下的线程同步 ...

  9. 第9章 用内核对象进行线程同步(4)_死锁(DeadLock)及其他

    9.7 线程同步对象速查表 对象 何时处于未触发状态 何时处于触发状态 成功等待的副作用 进程 进程仍在运行的时候 进程终止的时(ExitProcess.TerminateProcess) 没有 线程 ...

随机推荐

  1. 快速排序(Quicksort)的Javascript实现

    日本程序员norahiko,写了一个排序算法的动画演示,非常有趣. 这个周末,我就用它当做教材,好好学习了一下各种排序算法. 排序算法(Sorting algorithm)是计算机科学最古老.最基本的 ...

  2. eclipse 下,使用正常模式可以运行,DEBUG模式就卡住的解决方案

    最近开发的时候遇到一个问题,就是用运行就可以编译整个项目,但是使用debug模式就卡住了,编译一部分就不动了.开始我以为是项目太大的关系 但是也不至于就DEBUG不行,所以网上差了些资料,原来是DEB ...

  3. 学习maven的各种问题

    1. The container 'Maven Dependencies' references non existing library 解决方法,将eclipse中maven插件中“resolve ...

  4. CoolBlog开发笔记第2课:搭建开发环境

    教程目录 1.1 CoolBlog开发笔记第1课:项目分析 前言 今天是CoolBlog开发笔记的第2课,我们将要讲解的是开发环境的搭建.俗话说"工欲善其事必先利其器",Djang ...

  5. selenium webDriver给隐藏域赋值 input hidden set value

    //直接这样无法给input hidden赋值// driver.findElement(By.id("image_default")).sendKeys("a1112. ...

  6. document.getElementById("searchForm").submit is not a function

    document.getElementById("searchForm").submit is not a function在用userForm.submit() 提交表单的时候, ...

  7. jquery fadeIn用法

    $("#msgSpan").fadeIn("slow"); setTimeout('$("#msgSpan").hide("slo ...

  8. 引入CSS文件的方式,以及link与@import的区别

    一.引入css的方式 在HTML中引入css的方法主要有4种:行内式.内嵌式.链接式和导入式. 1.行内式 <div style="background:yellow;"&g ...

  9. [leetcode-605-Can Place Flowers]

    Suppose you have a long flowerbed in which some of the plots are planted and some are not. However, ...

  10. AngularJs学习笔记1——总体介绍

    这周末在家呆了两天,正好中午闲暇时间继续分享Angularjs相关,今天主要分享Angularjs总体介绍及数据绑定部分内容,下面直接进入主题. 1.基本概念: AngularJS是为了克服HTML在 ...