在 Linux 上如何获取中断向量号?

2024-01-28

当我运行“cat /proc/interrupts”时,我可以得到以下信息:

           CPU0       CPU1
  0:        253       1878   IO-APIC-edge      timer
  1:          3          0   IO-APIC-edge      i8042
  7:          1          0   IO-APIC-edge      parport0
  8:          0          1   IO-APIC-edge      rtc0
  9:          0          0   IO-APIC-fasteoi   acpi
 12:          1          3   IO-APIC-edge      i8042
 16:     681584         60   IO-APIC-fasteoi   uhci_hcd:usb3, nvidia
 17:          0          0   IO-APIC-fasteoi   uhci_hcd:usb4, uhci_hcd:usb7
 18:          0          0   IO-APIC-fasteoi   uhci_hcd:usb8
 22:          2          1   IO-APIC-fasteoi   ehci_hcd:usb1, uhci_hcd:usb5
 23:         17         17   IO-APIC-fasteoi   ehci_hcd:usb2, uhci_hcd:usb6
 44:     146232     472747   PCI-MSI-edge      ahci
 45:        118        115   PCI-MSI-edge      snd_hda_intel
 46:   10038650        842   PCI-MSI-edge      eth1
NMI:      44479      43798   Non-maskable interrupts
LOC:   19025635   29426776   Local timer interrupts
SPU:          0          0   Spurious interrupts
PMI:      44479      43798   Performance monitoring interrupts
IWI:          0          0   IRQ work interrupts
RES: 3442001789 3442627214   Rescheduling interrupts
CAL:       1406       1438   Function call interrupts
TLB:     781318     792403   TLB shootdowns
TRM:          0          0   Thermal event interrupts
THR:          0          0   Threshold APIC interrupts
MCE:          0          0   Machine check exceptions
MCP:       2063       2063   Machine check polls
ERR:          0
MIS:          0

如何获取“NMI”“LOC”“SPU”“PMI”等的中断号


On x86 NMIs始终位于中断向量 2 上。该数字与常见异常(除以 0、页错误等)一样是硬编码的。您可以在 Intel/AMD 的 CPU 文档中找到它。

If the APIC已启用(如问题中提出的转储中的情况),虚假中断的中断向量号可以从 APIC 获得SVR登记。再次,请参阅相关的相同 CPU 文档。

If the APIC未启用,而是PIC正在使用,然后虚假中断被传递为IRQ7(参见8259APIC 芯片规格)。这BIOS以 IRQ7 为中断向量的方式对 PIC 进行编程0Fh,但 Windows 和 Linux 更改了此映射以避免共享 IRQ 和 CPU 异常的相同中断向量。似乎无法从 PIC 查询此映射,但它是通过发送初始化控制字 2 建立的(ICW2) 到 PIC。这是相关的 Linux 代码init_8259A() http://lxr.free-electrons.com/source/arch/x86/kernel/i8259.c#L299:

    /* ICW2: 8259A-1 IR0-7 mapped to 0x30-0x37 on x86-64,
       to 0x20-0x27 on i386 */
    outb_pic(IRQ0_VECTOR, PIC_MASTER_IMR);

这应该回答虚假中断向量部分。

As for LOC and PMI,我认为,这些是本地 APIC 的中断,您可以从 APIC 找到它们的中断向量,就像上面的虚假中断一样。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Linux 上如何获取中断向量号? 的相关文章

随机推荐

  • 无法加载 libhdfs

    尝试使用 pyarrow 访问 hdfs 文件但无法使其工作 下面是代码 非常感谢您 rxie cedgedev03 code python Python 2 7 12 Anaconda 4 2 0 64 bit default Jul 2
  • 电子如何允许不安全的https

    Loading https github com https github com例如 工作正常 但是加载不安全的https 页面显示为空 我做了一些研究并尝试了 3 个标志 webSecurity allowDisplayingInsec
  • 如何清除服务器端文件上传文本(c#)

    我想清除文件上传的文件路径 文件上传位于更新面板内 我正在使用AsyncFileUpload 如何清除文件并更改文件上传的背景颜色 btnAudUpload Click 方法 string filename FileUpload FileN
  • gcc优化说明

    出于黑客的好奇心 我想知道如何gcc能巧妙地优化下面的功能吗 int c int i j 0 for i 0 i lt 10 i j i return j objdump D c o下面是针对arm的 但x86在逻辑上没有什么不同 0000
  • 清除标准输入缓冲区?

    我正在编写一些代码并使用 fgets 来获取用户输入 然后我在代码上编写了一个循环 以不断要求用户输入 直到用户打印退出 但第二次询问时 它写了 2 次 请输入您的输入 而不是 1 次 并且第一次没有等待我的输入 所以 我用谷歌搜索它 发现
  • 如何使用原子操作切换一个文档中的布尔字段?

    有没有办法通过原子操作来切换 MongoDB 中一个文档的布尔字段 说 用Python cl update id toggle field 1 目前 我认为通过一次手术不可能做到这一点 按位运算符 http www mongodb org
  • Oracle 中的匿名 TABLE 或 VARRAY 类型

    在 Oracle 中 我有时想创建诸如此类的构造 SELECT FROM TABLE STRINGS a b c SELECT FROM TABLE NUMBERS 1 2 3 显然 我可以为上述声明我自己的类型 我可以选择TABLE an
  • MediatR 发布和 MediatR 发送

    我已经尝试使用 MediatR 的 CQRS 模式 并且喜欢正在处理的应用程序正在转换的干净状态 在我见过和使用的所有例子中 我总是这样做 await Mediator Send command 查询也是一样的 var data await
  • float32 和 float64 之间的真正区别

    我想了解之间的实际区别float16 and float32从结果精度来看 例如 NumPy 允许您选择所需数据类型的范围 np float16 np float32 np float64 我担心的是 如果我决定使用 float16 来保留
  • 删除默认构造函数令人头疼

    我的 C 书是这么说的 lippman c Primer 第五版 第 508 页 如果类 有一个 const 成员 其类型未显式定义默认构造函数 则合成的默认构造函数被定义为已删除and该成员没有类内初始值设定项 强调我的 那么为什么这段代
  • 使用套接字 io 向所有浏览器发送消息

    我正在摆弄socket io和node js 并且想知道如何完成以下任务 我有一个简单的表单 将文本字符串发送到服务器 服务器将其发回 并将其附加到div中 我想做的是为所有浏览器中的所有用户更新该 div 目前它只更新发送消息的浏览器 来
  • 拒绝应用来自...的样式,因为其 MIME 类型('text/html')不是受支持的样式表 MIME 类型,并且启用了严格的 MIME 检查

    此错误仅在 Chrome 中显示 我正在搜索这个问题 但还没有找到令人满意的解决方案 我附上了该错误的屏幕截图 请为此提出一些想法 错误图像 https i stack imgur com 6IAxV png 样式表的 MIME 类型应为t
  • 是否可以在 Wear OS 中永久可靠地运行网络 ping 服务?

    我正在尝试找到一种在 Wear OS 上以可靠的方式运行网络心跳服务的方法 目标是有一个进程每 x 分钟发送一次网络请求 无论设备的状态如何 屏幕开 关 充电 关闭充电器等 有可能实现吗 我的方法是运行前台服务 https develope
  • SSDT 创建回滚部署脚本?

    我们可以使用TFS SSDT创建SQLServer部署脚本 但是有没有办法创建回滚脚本 以便我们可以回滚部署 谢谢 由于 SSDT 和类似产品 都是通过将项目中的模式与实时数据库进行比较来使数据库与模型同步来工作的 因此没有直接的方法来创建
  • 可以使用 Window.Onscroll 方法来检测滚动方向吗?

    可以使用 Window Onscroll 方法来检测滚动方向吗 如果您在页面加载时以及每次发生滚动事件时记录scrollX和scrollY 那么您可以将以前的值与新值进行比较 以了解滚动的方向 这是概念证明 function scrollF
  • 从 .NET Windows 服务调用本机 DLL 失败

    我有一个本机 dll 形式的第 3 方 API 我使用 C 调用它DllImport 此本机 dll 依赖于打开的第 3 方应用程序 当我正常运行代码时 API 会执行预期的操作并驱动应用程序 然而 当我运行与 Windows 服务相同的代
  • 将点分布在边界内的表面上

    我对一种在 4 面 如正方形 上分布预定义数量的点的方法 算法 感兴趣 主要问题是每个点必须具有彼此之间的最小和最大接近度 两个预定义值之间的随机值 基本上 任何两点的距离不应小于 2 也不应大于 3 我的代码将用 ruby 实现 点是位置
  • 一年中的每个星期?

    我试图通过一年中的周数和一年中的周数来获取一年中的月份数 例如 第 1 周是 1 月 返回 1 第 6 周是 2 月 所以我想要 2 我试着去date parse from format W Y 但没有成功 这给了我错误 有什么办法可以一起
  • 运行 sbt 的项目根目录中的 java.lang.NullPointerException

    我从 Scala 开始 尝试在我的项目文件夹中运行 sbtbuild sbt是 当我收到此错误时 此文件夹是唯一的文件夹 如果我在src文件夹或我的文档文件夹中我没有 收到错误 谁能告诉我为什么会发生这种情况 我不知道如何表示文件夹结构 它
  • 在 Linux 上如何获取中断向量号?

    当我运行 cat proc interrupts 时 我可以得到以下信息 CPU0 CPU1 0 253 1878 IO APIC edge timer 1 3 0 IO APIC edge i8042 7 1 0 IO APIC edge