糖尿病康复,内容丰富有趣,生活中的好帮手!
糖尿病康复 > linux驱动学习加强版-4(class_create和device_create)

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

时间:2023-06-30 20:35:54

相关推荐

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

文章目录

一、class_create和device_create

一、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就可以了

如果觉得《linux驱动学习加强版-4(class_create和device_create)》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。