Linux 5.1 irq
时间: 2023-10-18 10:31:03 浏览: 54
在Linux 5.1版本中,irq(中断请求)模块的相关代码可以在以下文件中找到:/kernel/irq/irqdomain.c和/kernel/irq/debugfs.c。
具体来说,在系统启动到board文件时,会调用init_machine函数,接着调用of_platform_populate()接口,加载平台总线和平台设备。这一过程涉及到的函数调用关系如下:
of_platform_default_populate_init ---> of_platform_default_populate ---> of_platform_populate ---> of_platform_bus_create ---> of_platform_device_create_pdata ---> of_device_alloc ---> of_irq_to_resource_table ---> of_irq_to_resource ---> of_irq_get ---> of_irq_parse_one ---> irq_create_of_mapping ---> irq_create_fwspec_mapping ---> irq_domain_translate //解析参数 ---> d->ops->translate (gic_irq_domain_translate) ---> d->ops->xlate ---> irq_domain_alloc_irqs ---> gic_irq_domain_alloc //执行软硬件的映射,并且根据中断类型设置struct irq_desc->handle_irq处理函数。
在配置中启用了CONFIG_IRQ_DOMAIN_DEBUG和CONFIG_GENERIC_IRQ_DEBUGFS后,可以通过/sys/kernel/debug/irq_domain_mapping,/sys/kernel/irq/irqs,/sys/kernel/irq/domains和/proc/irq等路径下的文件来查看irq的调试信息。这些路径下的virq_debug_show和irq_debug_show函数可以展示调试信息。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* *3* [linux IRQ Management(四)- IRQ Domain](https://blog.csdn.net/weixin_41028621/article/details/101448227)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"]
[ .reference_list ]