一、与“异常”的关系
中断是由硬件引起;
异常:如÷零,缺页等,需要内核来处理时,处理器会产生一个异常。为处理器本身产生的同步中断;
二、中断与BH
中断处理程序是上半部 top half。
bottom half目前有几种:软中断,tasklet,工作队列。
三、request_irq注册的软件中断号的中断处理;
而通过irq_create_mapping来维护硬件中断号和软件中断号的对应关系。
软件中断号可以动态分配,其实就是找到一个空的。
对应关系最后存于
struct irq_map_entry {
irq_hw_number_t hwirq;
struct irq_host *host;
};
extern struct irq_map_entry irq_map[NR_IRQS];
四、
中断上下文和进程没有什么瓜葛,与current宏更是不相干。
中断不能休眠;
中断不具有自己的栈,共用内核的。内核栈大小是2页。
五、
in_interrupt 检查是否处于中断和下半区
in_irq