什么是中断:
中断是某些硬件用来与cpu异步通信的一种方式,类似的还有异常.(中断与异常的根本区别还有待继续研究,将在新的文章中解释)
中断的本质:
发往中断控制器的一个电信号,而后由中断控制器发往cpu。最后由cpu来调用之前注册的中断控制器。
中断类型:
快速中断(SA_INTERRUPT):在中断处理程序中禁止所有的中断
共享中断(SA_SHIRQ):多个中断处理程序共享同一个中断线,在中断来临时,会调用注册在这个中断线上的每一个中断处理程序。
中断上下文:
中断处理程序或下半部时,内核处在中断上下文中,不与任何的进程有关系,current没有意义(仅表示被中断的进程)。而且在中断上下文中,是不可以睡眠的。因为没有进程的表述,所以一旦睡眠,调度程序没有办法激活。
存在一个中断栈,大小一页,为中断上下文。
request_irq()函数可能会睡眠,因为其中包括对proc的文件操作。