OSPM如何在抢占中断前判断传入的中断是否为SCI?
OSPM如何在抢占中断前判断传入的中断是否为SCI?
其实这个问题的核心逻辑很好理解,咱先从ACPI规范里的基础设定说起,先给你看一段规范定义:
SCI中断被定义为可共享中断,连接到一个使用共享协议的操作系统可见中断,FADT(固定ACPI描述符表)中有一个条目专门指明SCI中断映射到哪个具体中断。
你可以把SCI当成公司里的「电源管理专属分机」,OSPM就是负责电源管理的部门——它在系统刚启动初始化的时候,早就从FADT这个「官方通讯录」里拿到了SCI的专属中断号(IRQ),把这个号记的门儿清。
等有中断进来的时候,流程是这样的:
- 中断控制器会先把这个中断对应的IRQ号报上来
- OSPM一核对,发现这个IRQ号就是之前从FADT里拿到的SCI专属号,那不用想,这肯定是SCI中断,直接接手处理就行
- 如果不是这个号,就直接把中断转交给对应的其他处理程序,完全不会搞错
哪怕SCI是可共享中断也没关系,就算多个设备共用同一个IRQ,OSPM也会先拿自己记的SCI专属IRQ号做核对,确认是自己的活儿才会去处理ACPI事件,不是的话就把中断还给控制器,留给其他共享设备处理。
再补一段相关的逻辑说明:
一旦掌握了SCI对应的IRQ号,就能轻松关联到对应的中断向量,核心就是OSPM提前拿到了这个专属标识,根本不用「盲猜」中断类型。
备注:内容来源于stack exchange,提问作者smwikipedia
相关产品推荐
相关产品推荐

