文章目录
一、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)》对你有帮助,请点赞、收藏,并留下你的观点哦!