设备类展示:自动在/sys/class/下创建类

概述

在Linux内核驱动开发中,设备类(Class)是一个重要的概念,它允许将相似类型的设备组织在一起,并在/sys/class/目录下展示。本章将介绍如何自动创建一个设备类,并在其中显示设备信息。

/sys/class/ 设备类展示

设备类的作用

关键API函数

函数 描述
class_create() 创建一个新的设备类
device_create() 在类中创建设备节点
class_destroy() 销毁设备类
device_destroy() 销毁设备节点

代码示例

以下是一个简单的示例,展示如何创建设备类并在其中添加设备:

#include <linux/init.h>
#include <linux/module.h>
#include <linux/device.h>

static struct class *my_class;
static struct device *my_device;

static int __init my_init(void)
{
    // 创建设备类
    my_class = class_create(THIS_MODULE, "my_class");
    if (IS_ERR(my_class)) {
        pr_err("Failed to create class\n");
        return PTR_ERR(my_class);
    }

    // 在类中创建设备
    my_device = device_create(my_class, NULL, MKDEV(0, 0), NULL, "my_device");
    if (IS_ERR(my_device)) {
        pr_err("Failed to create device\n");
        class_destroy(my_class);
        return PTR_ERR(my_device);
    }

    pr_info("Class and device created successfully\n");
    return 0;
}

static void __exit my_exit(void)
{
    device_destroy(my_class, MKDEV(0, 0));
    class_destroy(my_class);
    pr_info("Class and device destroyed\n");
}

module_init(my_init);
module_exit(my_exit);

MODULE_LICENSE("GPL");
MODULE_AUTHOR("Your Name");
MODULE_DESCRIPTION("Example of creating a class in /sys/class/");

效果展示

加载上述模块后,您可以在/sys/class/目录下看到新创建的类:

$ ls /sys/class/
my_class
$ ls /sys/class/my_class/
my_device
/sys/class/ 目录结构 my_class my_device

总结

通过使用Linux内核提供的设备类API,我们可以轻松地在/sys/class/目录下创建和管理设备类。这不仅有助于设备的管理,还为用户空间提供了方便的接口。