Linux 内核有方便直观的办法看到 local cpu 的中断是否被关闭了吗?

2023-07-20 17:55:48 +08:00
 huangya

我的理解是当 cpu 在响应中断的时候,cpu 会自动把中断关闭。这个动作是硬件自己做的,无需软件参与。 参考: 1.https://cloud.tencent.com/developer/article/1517851?from=15425

2.https://stackoverflow.com/questions/14295403/should-my-interrupt-handler-disable-interrupts-or-does-the-arm-processor-do-it-a

我想验证这个,我想在任意一个 driver 处理中断的函数中看下当前运行的这个 cpu core 确实把中断关闭了。有什么现成的函数或者接口吗?或者需要用体系结构相关的汇编代码 dump 相关寄存器?有 arm 的办法最好。

995 次点击
所在节点    Linux
4 条回复
Kumo31
2023-07-20 18:11:11 +08:00
用 qemu 调试内核
huangya
2023-07-20 18:18:04 +08:00
@Kumo31 你的意思是在 qemu 里面 dump 相关寄存器吧?嗯,这是个办法。
adadada
2023-07-20 23:34:57 +08:00
能自己改 kernel 的话,直接调用 irqs_disabled()
huangya
2023-07-21 10:17:03 +08:00
@adadada 我在中断处理加了这个函数(假设用 request_irq 申请的中断,在 handler 里面加的),确实是返回 1 。
request_irq(unsigned int irq, irq_handler_t handler, unsigned long flags,
const char *name, void *dev)

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/958387

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX