ARM Linux中断机制之中断的申请
载了中间的一个还得将前一个和后一个连接起来。在这里用了一个小技巧。
指针**action_ptr中存储了两个对象,一个是&action->next,另一个是action->next。
比如链表中有三个action,我们要卸载的是第二个,此时指针action_ptr中存放的是第一个action中的成员next的地址&action->next。
*action_ptr存放的是第一个action的action->next所指向的对象,即第二个action。此时的action->next即是第三个action。
只要*action_ptr = action->next;就将第一个action的action->next指向了第三个action。
*/
if (action->dev_id == dev_id)
break;
action_ptr = &action->next;
}
*action_ptr = action->next;
。。。。。。
if (!desc->action) {// 无其他中断使用该中断线则禁止
desc->status |= IRQ_DISABLED;
if (desc->chip->shutdown)
desc->chip->shutdown(irq);
else
desc->chip->disable(irq);
}
。。。。。。。
return action;//返回中断处理例程结构体
}
//在函数free_irq中将函数__free_irq返回的中断处理例程结构体释放掉。
void free_irq(unsigned int irq, void *dev_id)
{
kfree(__free_irq(irq, dev_id));
}
ARMLinux中断机制申 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)