Skip to content

LV050-kobject-kset与ktype

kobject 是 Linux 设备模型的基本单元,也是设备模型中最难理解的一部分,可参考内核文档 kobject.txt - Documentation/kobject.txt,内核文档好像是参考这个的:The zen of kobjects LWN

一、kobject、kset 和 ktype

这里先引出三个概念:kobject、kset 和 ktype,在开始这一节的学习前,先大概了解一下:

  • kobject 是基本数据类型,每个 kobject 都会在 "/sys/“文件系统中以目录的形式出现。
  • kset 是一个特殊的 kobject(因此它也会在 "/sys/“文件系统中以目录的形式出现),它用来集合相似的 kobject(这些 kobject 可以是相同属性的,也可以不同属性的)。
  • ktype 代表 kobject(严格地讲,是包含了 kobject 的数据结构)的属性操作集合。由于通用性,多个 kobject 可能共用同一个属性操作集,因此把 ktype 独立出来了。每个 kobject 都会指定一个 ktype(包括 kset 内嵌的 kobject)。

二、有什么关系?

三者的关系大概如下:

image-20250105194754452
  • kset 可批量管理 kobject。
  • kset 继承自 kobject,且将一组 kobject 串连成一个链表进行统一管理。
  • kobject 既可以通过 parent 指针找到上层 kobject,也可以通过 kset 指针找到其上层 kset。但上层 kobject 对象无法遍历到下层,所以较少使用。