arm 驱动linux内核驱动之中断下半部编程
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");
arm驱动linux内核驱动中断下半部编 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)