中断

一、与“异常”的关系

中断是由硬件引起;

异常:如÷零,缺页等,需要内核来处理时,处理器会产生一个异常。为处理器本身产生的同步中断;


二、中断与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



你可能感兴趣的:(工作,struct)