2.3.irq_desc的分配 #define irq_alloc_descs(irq, from, cnt, node) \__irq_alloc_descs(irq, from, cnt, node, THIS_MODULE)#define irq_alloc_desc(node) \irq_alloc_descs(-1, 0, 1, node)#define irq_alloc_desc_at(at, node) \irq_alloc_descs(at, at, 1, node)#define irq_alloc...
irq_desc数据结构用于描述一个irq对应的各种信息,主要有以下方面:irq_data,描述该irq的irq number,irq chip,irq domain,处理器亲和力等等 handle_irq,highlevel irq-eventshandler,流处理函数 irq_action,一个链表,每个成员包含该irq中断处理函数等信息 depth,中断嵌套深度 name,cat /proc/interrupts时显示的名称 等等...
irq_flow_handler_t handle_irq;//指向中断函数, 中断产生后,就会执行这个handle_irqstructirq_chip *chip;//指向irq_chip结构体,用于底层的硬件访问,下面会介绍structmsi_desc *msi_desc;void*handler_data;void*chip_data;structirqaction *action;/*IRQ action list*///action链表,用于中断处理函数unsignedint...
struct irq_desc{irq_flow_handler_t handle_irq;//指向中断函数, 中断产生后,就会执行这个handle_irqstruct irq_chip*chip;//指向irq_chip结构体,用于底层的硬件访问,下面会介绍struct msi_desc*msi_desc;void*handler_data;void*chip_data;struct irqaction*action;/* IRQ action list *///action链表,用于中...
handle_irq是irq_desc结构中与PIC相关的中断处理函数的接口,通常称作”hard irq handler“。此函数对应了PIC中的handle_xxx_irq()系列函数(xxx代表触发方式),do_IRQ()就会调用该函数,此函数最终会执行desc->action。 irq_data用于描述PIC方法使用的数据,irq_data下面有两个比较重要的结构:chip和state_use_accessor...
Notes:中断描述符irq_desc是用于描述一个中断的;irq_chip是中断控制器的callback函数;irq_data是描述中断控制器的,常挂在irq_desc下。 1、底层irq chip相关的数据结构 中断描述符中应该会包括底层irq chip相关的数据结构,linux kernel中把这些数据组织在一起,形成struct irq_data,具体代码如下: ...
struct irqdesc irq_desc[NR_IRQS];NR_IRQS表示中断源的数目。2.irq_desc[]是一个指向irq_desc结构的数组,irq_desc结构是各个设备中断服务例 程的描述符。struct irq_desc{ irq_flow_handler_t handle_irq;struct irq_chip*chip;void*handler_data;void*chip_data;struct irqaction*action;unsigned int ...
irq_get_desc_buslock 卡住 irq_enable 函数:enable_irq( ): 函数enable_irq( )在实现过程中调用了函数__enable_irq( ),根据中断所处的深度和状态的不同,会有不同的执行结果,一般用于改变中断的状态,使中断处于唤醒状态,触发中断处理函数的执行及减少中断所处的深度,即改变字段depth的值。
□ struct irq_desc,中断描述符,每个irq都会在系统中分配一个该数据结构,用于描述该irq的相关信息,包含了irqaction 。 □struct irq_domain/struct irq_chip, 是对中断控制器的软件抽象。 irq_domain 侧重于对级联关系的描述,以及该中断控制器对某个中断响应的描述在struct irq_domain_ops中进行组织。irq_domain中...
在linux kernel中,对于每一个外设的IRQ都用struct irq_desc来描述,我们称之中断描述符(struct irq_desc)。linux kernel中会有一个数据结构保存了关于所有IRQ的中断描述符信息,我们称之中断描述符DB(上图中红色框图内)。当发生中断后,首先获取触发中断的HW interupt ID,然后通过irq domain翻译成IRQ nuber,然后通过...