前面已经介绍了总线、设备、驱动,本章主要介绍设备类,该模块主要对系统中的设备进行分类,而该设备类主要是用于将系统中已创建的设备归到各自类型中,而CLASS中各类别主要是对device的链接。下面是我的电脑中已注册的设备类别。
我们以block类为例,其目录下所有子目录均是对/sys/devices中的设备的链接。
此处我们将从class相关的结构体、class模块初始化、class类别的注册与注销、class设备的添加与删除这几部分进行分析。
class相关的结构体
class结构体的定义如下,其实和bus_type的定义类似,class通过包含subsys_private类型的变量,也就包含了subsystem,其中也定义了kset类型的subsys变量,用于将该类下所有的设备关联在一起等。
class模块初始化
该模块的初始化主要用于创建class类别的全局kset变量,通过调用kset_create_and_add接口即完成了创建kset变量以及其对应的kobject变量,同时在sysfs文件系统的根目录下创建了名为class的目录,即为此在sysfs目录下完成class类别的创建。
int __init classes_init(void)
{
class_kset = kset_create_and_add("class