微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > arm 驱动linux内核驱动之中断下半部编程

arm 驱动linux内核驱动之中断下半部编程

时间:11-19 来源:互联网 点击:

static void __exit cdevtest_exit(void){
int i = 0;
printk("*******%s****1****\n", __FUNCTION__);
tasklet_kill(&myvirtualdisk->mytasklet);//删除任务
del_timer(&myvirtualdisk->mytimer);
printk("*******%s*****2***\n", __FUNCTION__);
for(i = 0; i < 3; i++)free_irq(gpio_to_irq(myirq_descs[i].irq_id), &myirq_descs[i]);
printk("*******%s*****3***\n", __FUNCTION__);
cdev_del(&myvirtualdisk->mycdev);

//删除工作和工作队列
flush_workqueue(myvirtualdisk->myworkqueue);
destroy_workqueue(myvirtualdisk->myworkqueue);

printk("*******%s*****4***\n", __FUNCTION__);
class_device_unregister(myvirtualdisk->mycdevclassdevice);
printk("*******%s*****5***\n", __FUNCTION__);
class_destroy(myvirtualdisk->mycdevclass);
printk("*******%s*****6***\n", __FUNCTION__);
kfree(myvirtualdisk);
printk("*******%s********\n", __FUNCTION__);
unregister_chrdev_region(MKDEV(major, 0), 1);
printk("*******%s*****7***\n", __FUNCTION__);
}

module_init(cdevtest_init);
module_exit(cdevtest_exit);
MODULE_LICENSE("GPL");

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top