Linux内核API class_create

class_create()用于动态创建设备的逻辑类,并完成部分字段的初始化,然后将其添加进Linux内核系统中。此函数的执行效果就是在目录/sys/class下创建一个新的文件夹,此文件夹的名字为此函数的第二个输入参数,但此文件夹是空的。宏class_create()在实现时,调用了函数__class_create(),作用和函数__class_create()基本相同。

class_create文件包含

#include <linux/device.h>

class_create宏定义:

在内核源码中的位置:linux-3.19.3/include/linux/device.h

宏定义格式:

#define class_create(owner, name)                     \
({                                                    \
    static struct lock_class_key __key;               \
    __class_create(owner, name, &__key);              \
})

class_create输入参数说明

宏class_create()有两个输入参数,分别解释如下:

  • 参数owner是一个struct module结构体类型的指针,指向函数__class_create()即将创建的struct class类型对象的拥有者,一般赋值为THIS_MODULE,此结构体的详细定义见文件linux-3.19.3/include/linux/module.h。
  • 参数name是char类型的指针,代表即将创建的struct class变量的名字,用于给struct class的name字段赋值。

class_create返回参数说明

  • 宏class_create()的返回值与函数__class_create()的返回值相同,都代表新创建的逻辑类,在函数__class_create()的分析文档的返回参数说明部分已对此结构体进行了详细的说明。

class_create实例解析

此宏需要与函数class_destroy()配对使用,不能单独使用,当单独使用时,第一次不会出现错误,但当第二次插入模块时就会出现错误。关于此宏的说明及结果分析请读者参考极客笔记函数class_destroy()的分析文档。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程