关于中断的顶半部和底半部
我们要把中断处理中需要做的工作区分开来:中断处理程序中,只处理那些有严格时间限制的工作,比如复位硬件,对中断进行应答等。而那些可以拖到后面做的,或者说有可能睡眠的处理,都应当放到下半部去处理这样做的目的很显然,就是让中断处理程序尽可能的简洁明快在适当的时机,下半部会开中断执行
“顶半部”:是实际响应中断的例程(request_irq 注册的那个例程)。
“底半部”:是被顶半部调度,并在稍后更安全的时间内执行的函数
为什么要划分呢?
因为中断存在一个悖论: Linux 大部分动作都是有中断来做,一个中断触发拉要做很多的事情,但是因为中断的优先级高,占用cpu,我们需要中断的占用事件应该更断,可是又有很多事情要去做,这就有拉顶半部和底半部。