1,如何禁止当前CPU上的所有中断
local_irq_save()和local_irq_restore()函数,
void local_irq_save(unsigned long flags);
void local_irq_disable(void);
2,目前没有方法禁止整个系统的中断
3,如果判断当前的进程是否处于中断上下文中,
答:通过使用in_interrupt()函数,in_interrupt()是判断当前进程是否处于中断上下文,这个中断上下文包括底半部和硬件中断处理过程,
4,如何禁止本地处理器的软中断和tasklet的处理
答:void local_bh_disable()和void local_bh_enable()函数
5,linux在处理水平触发中断和边沿触发中断的区别。
linux的默认处理是水平触发不可以嵌套,水平中断的处理函数是andle_level_irq边沿触发可以嵌套,边沿触发的处理函数是andle_edge_irq,所以在处理边沿触发的中断驱动程序中可以先判断当前的中断是否处于嵌套,如果是就直接返回。