cancel_work(&mywork); destroy_workqueue(wk_info->own_workqueue); kobject_put(wk_info->sysfs_obj); sysfs_remove_file(wk_info->sysfs_obj, &etx_attr.attr); device_destroy(wk_info->work_class, wk_info->dev); class_destroy(wk_info->work_class); cdev_del(&wk_info->chrdev); unregiste...
devcls = class_create(THIS_MODULE, "chr_cls"); dev = device_create(devcls, NULL, MKDEV(dev_major, 0), NULL, "chr2"); return ret; } static void __exit chr_dev_exit(void) { //释放设备节点。 device_destroy(devcls, MKDEV(dev_major, 0)); class_destroy(devcls); //释放申请的设...
class_create()的代码如下: class_create()是通过调用__class_create()注册到内核中的。 __class_create()的代码如下: class_create_release的代码如下: 实际上,__class_create()是通过调用__class_register()注册到sysfs中的!所以,本质上,class_create()和class_register()的作用是类似的。 class_destroy()...
cancel_work(&mywork); destroy_workqueue(wk_info->own_workqueue); kobject_put(wk_info->sysfs_obj); sysfs_remove_file(wk_info->sysfs_obj, &etx_attr.attr); device_destroy(wk_info->work_class, wk_info->dev); class_destroy(wk_info->work_class); cdev_del(&wk_info->chrdev); unregiste...
struct class *class_create (struct module *owner, const char *name) class_create 一共有两个参数,参数 owner 一般为 THIS_MODULE,参数 name 是类名字。返回值是个指向结构体 class 的指针,也就是创建的类。卸载驱动程序的时候需要删除掉类,类删除函数为 class_destroy,函数原型如下: ...
<2>class_destroy()执行的效果是删除函数__class_create()或宏class_create()在目录/sys/class下创建的逻辑类对应的文件夹。device_destroy()用于销毁设备节点。 代码 //在命令行输入insmod命令,就是注册驱动程序。之后就会进入这个入口函数 //3,入口函数 ...
container_of(obj, struct class_private, class_subsys.kobj) struct class_private,是class连接到系统中的重要结构。class_subsys是kset类型, 18、代表class在sysfs中的位置。class_devices是klist类型,是class下的设备链表。class_interfaces是list_head类型的类接口链表,设备类接口稍后会介绍。class_dirs也是kset类型...
class_destroy(dev_class); r_class: unregister_chrdev_region(dev,1); return -1; } /* ** Module exit function */ static void __exit etx_driver_exit(void) { wait_queue_flag = 2; wake_up_interruptible(&wait_queue_etx); device_destroy(dev_class,dev); ...
示例一,通过class_create()、class_destroy()去注册和注销/sys/class/my_char_dev 代码如下: 1 #include <linux/module.h> 2 #include <linux/init.h> 3 #include <linux/device.h> 4 5 struct class *mem_class; 6 7 static int __init class_create_destroy_init(void) 8 { 9 // class_create...
(dev_id,0),NULL,"third_drv");// 根据class来初始化class_device,会创建出对应的设备文件printk("init\n");return0;}staticvoid__exitthird_exit(void){unregister_chrdev(dev_id,dev_name);class_device_unregister(third_class_dev);// 后创建的先卸载class_destroy(third_class);printk("exit\n");}...