前言
在上一篇中,我们大致描述了LINUX设备模型,我们先来总结一下三要素的关系。
从图中可以看出,Linux设备模型就是"总线、设备、驱动、类"这四个概念之前的相互关系;这也是Linux2.6内核抽象出来的用于管理系统中所有设备的模型图;
简单地描述设备模型的层次关系如下:
1、驱动核心中可以注册多种类型的总线(bus_type);
2、每一种类型的总线下面可以挂载许多设备(device);
3、每一种类型的总线可以使用很多设备驱动(device_driver);
4、每一个驱动程序可以管理一组设备;
这种基本关系的建立源于实际系统中各种总线、设备、驱动、类结构的抽象;
设备模型之kobject、kset
kobject是设备模型中一个很基本的概念,最初支持为了支持引用计数,但是随着时间的转移,它承担了越来越多的任务:
1)对象的引用计数
2)SYS表述
3)数据结构关联
4)热插拔处理
它的定义如下:
struct kobject {
//名称
//指向kobject的父对象,以此来在内核中构造一个对象层次结构,并且可以将多个对象之间的关系表现初来,这就是sysfs的真相:一个用户空间的文件系统,用来表示内核中kobject对象的层次结构。
};
一个kobject存在的意义在于把高级对象连接到设备模型上。kobject正如最顶层的基类,而其他类则是派生物,它实现了一系列方法,对自