Linux内核设计与实现
第6章 中断和中断处理程序 6.1 中断 1)物理学角度,中断是一种电信号,由硬件生产,并直接送入中断控制器的输入引脚上,然后再由中断控制器向处理器发送相应的信号。处理器检测到此信号,便中断当前工作转而处理中断。此后,处理器通知操作系统已经产生中断,操作系统对这个中断进行适当的处理。 2)中断使得硬件得以与处理器通信 3)不同设备对应的中断不同,每个中断都有一个唯一的数字标识 4)异常:它在产生时必须考虑与处理器时钟同步,称为同步中断 6.2 中断处理程序 1)响应中断时,内核会执行一个函数,该函数叫做中断处理函数 2)它是驱动程序的一部分 3)和其他内核函数的区别:中断处理程序是被内核调用来响应中断的,运行与中断上下文。 4)上半部和下半部:中断处理程序就是上半部,做有严格实现的工作 6.3 注册中断处理程序 1)int request_irq(unsigned int irq, //要分配的中断号 irqreturn_t (*handler)(int, void *, struct pt_regs *), //指向处理这个中断的实际中断处理程序 unsigned long irflags, //SA_INTERRUPT,SA_SAMPLE_RANDOM,SA_SHIRQ const char *devname, //与中断相关的设备的ASCII文本表示法 void *dev