linux驱动学习加强版-4(class_create和device_create)

文章讲述了在Linux驱动程序中,如何使用class_create和device_create进行驱动注册,以及对应的注销过程。class_create用于在sys/class下创建类目录,添加属性;device_create则在/dev下创建字符设备,两者配合使用才能成功创建设备节点。注销时需匹配使用class_destroy和device_destroy,确保资源正确释放。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、class_create和device_create

首先我们看我们驱动注册和注销

static int __init filectl_init(void)
{
    // 在初始化的时候进行驱动注册, 设备号, 设备名,核心操作函数
    major = register_chrdev(0,"filectl",&filectl_ops); 
    if(major < 0) {
        printk("[%s %d] filectl error\n", __FUNCTION__, __LINE__); // 注册失败
        return -1;
    }

    filectl_class = class_create(THIS_MODULE, "filectl"); // class_create 动态创建dev的类
    // IS_ERR 查看指针是否有错误
    if(IS_ERR(filectl_class)) {
        printk("[%s %d] class_create error\n", __FUNCTION__, __LINE__);
        unregister_chrdev(major,"filectl");
        return -1;
    }
	// 创建字符设备
    device_create(filectl_class, NULL, MKDEV(major, 0),NULL, "filectl");
    printk("[%s %d] filectl driver create success\n", __FUNCTION__, __LINE__);

    return 0;
}

static void __exit filectl_exit(void) {
    device_destroy(filectl_class, MKDEV(major, 0));
    class_destroy(filectl_class);
    // 注销字符设备
	unregister_chrdev(major,"filectl");
    printk("[%s %d]goodbye filectl driver\n",  __FUNCTION__, __LINE__);
}

在注册函数里面会有 class_create 和一个 device_create. 这是成双成对的。
注销函数是里面会有 class_destroy 和一个 device_destroy,同样的这也是一起的,不然你注册了不注销,下次就无法注册了。

class_create就是在sys/class里面去创建一个目录,并赋予一些属性方便后期操作,device_create就是在dev目录下创建一个字符设备。
但是我验证过,好像单独使用device_create是无法在dev下面去创造的,但是加上class_create就可以了

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

永不秃头的程序员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值