今天看啥  ›  专栏  ›  LitC

中断共享

LitC  · 简书  ·  · 2021-03-13 09:12

多个设备共享一根硬件中断线的情况在实际的硬件系统中广泛存在,Linux支持这种中断共享,下面是中断共享的使用方法。

  • 共享中断的多个设备在申请中断时,都应该使用IRQF_SHARED标志,而且一个设备以IRQF_SHARED申请某中断成功的前提是该中断未被申请,或该中断虽然被申请了,但是之前申请该中断的所有设备都以IRQF_SHARED标志申请该中断。
  • 尽管内核模块可访问的全局地址都可以作为request_irq(..., void *dev_id)的最后一个参数dev_id,但是设备结构体指针显然是可以传入的最佳参数。
  • 在中断到来时,会遍历执行共享此中断的所有中断处理程序,直到某一个函数返回IRQ_HANDLED。在中断处理程序顶半部中,应根据硬件寄存器中的信息比照传入的dev_id参数迅速的判断是否为本设备的中断,若不是,应迅速返回IRQ_NONE。
image.jpeg



原文地址:访问原文地址
快照地址: 访问文章快照