linux中class_create和class_register说明
本文介绍linux中class_create和class_register的相关使用方法
1 class结构体介绍
内核中定义了struct class结构体,顾名思义,一个struct class结构体类型变量对应一个类,内核同时提供了class_create(…)函数,可以用它来创建一个类,这个类存放于sysfs下面,一旦创建好了这个类,再调用device_create(…)函数来在/dev目录下创建相应的设备节点。这样,加载模块的时候,用户空间中的udev会自动响应device_create(…)函数,去/sysfs下寻找对应的类从而创建设备节点。
2 class相关API说明
如下表:
3 class_create()使用示例
示例一,通过class_create()、class_destroy()去注册和注销/sys/class/leds
#include
#include
#include
static struct class *leds_class
static int __init leds_init(void)
{
// class_create动态创建设备的逻辑类,并完成部分字段的初始化,然后将其添加到内核中。创建的逻辑类位于/sys/class/。
// 参数:
// owner, 拥有者。一般赋值为THIS_MODULE。
// name, 创建的逻辑类的名称。
leds_class = class_create(THIS_MODULE, "leds");
return 0;
}
static void __exit leds_exit(void)
{
class_destroy(leds_class);
}
module_init(leds_init);
module_exit(leds_exit);
MODULE_LICENSE("GPL");
4 class_register()使用示例
示例二,通过class_register()、class_unregister()去注册和注销/sys/class/leds
代码如下: