handle、name,x86默认使用legacy irq chip 8259,当然我们用的是APIC。这个函数后面会重点分析。87}2.2...
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...
在下文中一共展示了Vm.GetIrqChip方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。 示例1: Save ▲ func(apic *Apic)Save(vm *platform.Vm)error{varerr error// Save our IrqChip state.apic.State, err = vm....
intirq_set_affinity_locked(struct irq_data *data,conststruct cpumask *mask,boolforce){structirq_chip*chip=irq_data_get_irq_chip(data);structirq_desc*desc=irq_data_to_desc(data);intret =0;if(!chip || !chip->irq_set_affinity)return-EINVAL;if(irq_can_move_pcntxt(data)) { ret = ir...
中断描述符中应该会包括底层irq chip相关的数据结构,linux kernel中把这些数据组织在一起,形成struct irq_data,具体代码如下: structirq_data{u32mask;---TODOunsignedintirq;---IRQnumberunsignedlonghwirq;---HWinterruptIDunsignedintnode;---NUMAnodeindexunsignedintstate_use_accessors;---底层状态,参考IRQD...
unsigned int state_use_accessors;---底层状态,参考IRQD_xxxx struct irq_chip *chip;---该中断描述符对应的irq chip数据结构 struct irq_domain *domain;---该中断描述符对应的irq domain数据结构 void *handler_data;---和外设specific handler相关的私有数据 void *chip_data;---和中断控制器...
本节目标: 分析在linux中的中断是如何运行的,以及中断3大结构体:irq_desc、irq_chip、irqaction 在裸板程序中(参考stmdb和ldmia详解): 1.按键按下, 2
分析在linux中的中断是如何运行的,以及中断3大结构体:irq_desc、irq_chip、irqaction 在裸板程序中(参考stmdb和ldmia详解): 1.按键按下, 2.cpu发生中断, 3.强制跳到异常向量入口执行(0x18中断地址处) 3.1使用stmdb将寄存器值保存在栈顶(保护现场)
[ 0.002937] ===__irq_domain_add domain ffff8020c0032100 name irqchip@(___ptrval___) === irq-gic-v3-its-pci-msi 具体创建过程: 第一个:boot核init_IRQ 函数最终调用到irq_gic_v3.c中 host_data: 是struct gic_chip_data gic_data irq_domain_ops:gic_irq_domain_ops 参考:irq_gic_v3....
irq_state_clr_disabled(desc); #正常情况下回调用chip来使能irq if (desc->irq_data.chip->irq_enable) desc->irq_data.chip->irq_enable(&desc->irq_data); else desc->irq_data.chip->irq_unmask(&desc->irq_data); irq_state_clr_masked(desc); ...