Linux内核API __class_register

函数__class_register()对传入的参数代表的设备类进行部分字段的设置,包括设备类的属性、引用计数器等,然后将此设备类添加到Linux内核系统中。设备类对应设备的设备文件,但函数__class_register()不会在目录/dev下生成设备文件,需要将设备类传给逻辑设备,将逻辑设备注册进内核才会形成设备文件。

__class_register文件包含

#include <linux/device.h>

__class_register函数定义

在内核源码中的位置:linux-3.19.3/drivers/base/class.c

函数定义格式:

int __must_check __class_register(struct class *class, struct lock_class_key *key)

__class_register输入参数说明

  • 函数 __class_register()的第一个输入参数是struct class类型的指针变量,代表即将被加入Linux内核系统的逻辑类,具体解释请参考函数__class_create()的说明文档中的输入参数说明部分。
  • 函数的第二个输入参数是struct lock_class_key类型的指针变量,代表访问struct class类型变量的互斥锁。

__class_register返回参数说明

  • 函数__class_register()的返回结果是int型的变量,表示设备类是否注册成功,可能的返回结果是0、-ENOMEM,其中返回0代表成功,返回-ENOMEM代表失败,ENOMEM的值为12。

__class_register实例解析

函数__class_register()需要和函数class_unregister()配对使用,所以在此就没有此函数的单独测试程序,函数的测试及结果分析详细信息参考极客笔记中函数class_unregister()的分析文档。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程