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)。
二、有什么关系?
三者的关系大概如下:

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