Linux-4.9.88\kernel\irq里面各个文件的作用
时间: 2023-08-08 07:13:01 浏览: 55
在Linux内核版本4.9.88中,位于`kernel/irq`目录下的各个文件具有以下作用:
1. `chip.c`:该文件定义了中断控制器芯片的通用接口和操作函数。它提供了对中断控制器的初始化、中断注册、中断处理和中断控制等功能的支持。
2. `manage.c`:该文件实现了中断管理的相关函数,包括中断线程的创建、销毁、启动和停止等操作。它提供了对中断线程的管理和调度。
3. `handler.c`:该文件包含了中断处理程序的实现。它定义了中断处理函数的注册、注销和执行等操作。中断处理程序是在中断发生时被调用的函数,用于响应和处理中断事件。
4. `vector.c`:该文件定义了中断向量的映射和管理。它将硬件中断向量与内核中的IRQ号进行映射,并提供相关的操作函数用于管理中断向量表。
5. `proc.c`:该文件实现了与中断相关的/proc文件系统接口。它允许用户通过/proc文件系统读取和修改内核中断的状态和信息。
这些文件共同构成了Linux内核中对中断处理和管理的支持。它们通过提供必要的接口和函数,使得内核能够正确响应和处理各种硬件中断事件。
相关问题
kernel/irq/handle.c在linux内核中的作用
`kernel/irq/handle.c` 是 Linux 内核中处理中断的核心代码之一。它主要实现了中断处理程序的注册、注销和调度等功能。当硬件设备触发中断时,内核会调用 `handle_irq()` 函数,在该函数中查找对应的中断处理程序,并执行该处理程序来处理中断。
具体来说,`handle_irq()` 函数首先根据中断号查询中断描述符表中对应的中断描述符,然后调用 `handle_irq_event()` 函数处理该中断。`handle_irq_event()` 函数会根据中断类型调用相应的中断处理程序,如软中断处理程序、硬中断处理程序或者外部中断处理程序。在处理完中断后,`handle_irq_event()` 函数会更新中断描述符表中对应的中断描述符的状态,并调用 `irq_finalize_oneshot()` 函数来处理一次性中断。
总之,`kernel/irq/handle.c` 中的代码实现了 Linux 内核中断处理的核心逻辑,是 Linux 内核中非常重要的一部分。
Linux 5.1 irq
在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 ]