据我所知,“分配中断线”,但
> what is happening after request_irq()?
> How a particular handler is getting called on receiving interrupt?
任何人都可以用代码snipet解释它吗?
答案 0 :(得分:8)
request_irq()之后发生了什么?
设备驱动程序注册中断处理程序,并通过调用request_irq()启用给定的中断行进行处理。
呼叫流程为: -
线程的工作在do_irqd()中实现。每个中断行只能创建一个线程,共享中断仍由单个线程处理。
通过request_irq()使用ISR(中断处理程序)传递给start_irq_thread()。 start_irq_thread()创建一个调用ISR的内核线程。
接收中断时如何调用特定的处理程序?
当发生中断时,PIC控制器向cpu发出中断信息。
设备向PIC芯片发送中断,PIC通知CPU发生中断(直接或间接)。当CPU确认"中断发生时#34;信号,PIC芯片将中断号(00h和FFh之间,或0和255十进制)发送到CPU。该中断号用作中断向量表的索引。
处理器通常将每种中断类型映射到低内存中的相应指针。所有中断类型的指针集合是一个中断向量。向量中的每个指针指向相应中断类型(IRQ线)的ISR。" 中断向量只是一个中断处理程序的一个内存地址。中断向量表是一组由几个存储器地址组成的。"