Linux中断子系统
文章平均质量分 87
m0_46525308
记录自己的学习…
展开
-
Linux中断子系统分析之(四):驱动程序申请中断
中断子系统中有一个重要的设计机制,那就是Top-half和Bottom-half,将紧急的工作放置在Top-half中来处理,而将耗时的工作放置在Bottom-half中来处理。如果中断不分上下半部处理,那么意味着只有等上一个中断完成处理后才会打开中断,下一个中断才能得到响应。当某个中断处理处理时间较长时,很有可能就会造成其他中断丢失而无法响应,影响系统性能。中断分成上下半部处理可以提高中断的响应能力,在上半部处理完成后便将中断打开,这样就可以响应其他中断了,等到中断退出的时候再进行下半部的处理。为了进原创 2021-03-18 18:19:26 · 899 阅读 · 0 评论 -
Linux中断子系统分析之(三):irq domain
irq domain的作用前面也要提到过,来张图:irq domain结构体的定义如下所示:/* include/linux/irqdomain.h */struct irq_domain { /* 系统中的irq_domain都会挂入全局链表irq_domain_list,link就是挂入该链表的节点 */ struct list_head link; //IRQ domain的name const char *name; //irq_domain操作集原创 2021-03-18 18:19:00 · 2644 阅读 · 0 评论 -
Linux中断子系统分析之(二):通用的中断处理
当有外部中断发生时,硬件会根据异常向量表,找到中断的入口地址,开始调用由操作系统提供的通用中断处理函数。而系统初始化阶段的异常向量表的设置、执行中断服务例程前后的上下文保护与恢复等等,这部分是CPU架构相关代码。通用中断处理函数,核心是围绕着struct irq_desc来展开。在linux kernel中,对于每一个外设的中断都用struct irq_desc来描述,我们称之中断描述符,保存了中断的相关信息,如硬/软件中断号、中断服务例程等。struct irq_desc结构体定义如下:struc原创 2021-03-18 18:18:31 · 1231 阅读 · 0 评论 -
Linux中断子系统分析之(一):整体架构
中断的硬件框架处理器一般只有两根左右的中断引脚,而管理的外设却很多。为了解决这个问题,现代设备的中断信号线并不是与处理器直接相连,而是与一个称为中断控制器的设备相连接,后者才跟处理器的中断引脚直接连接。一个中断硬件组成架构的示例,如下图:中断控制器有的是支持多个CPU,如ARM的GIC、x86的APIC,有的不支持。在庞大复杂的硬件系统中,外设很多,硬件系统中可能就不止一个中断控制器了,中断控制器可以级联。一个中断级联的硬件框架示例,如下图:Linux的中断子系统的软件框架图如下所示:最上面原创 2021-03-18 18:18:00 · 1180 阅读 · 0 评论