每次溢出后如何生成性能监视中断

时间:2016-12-13 20:51:41

标签: kernel performancecounter interrupt-handling systems-programming apic

我想配置性能计数器IA32_PERF_FIXED_CTR0,以便在每N条退出指令后生成性能监控中断(PMI)。

问题是虽然我得到了第一个PMC中断,但即使我将计数器重置为其初始计数,我也没有得到任何进一步的中断,清除溢出标志,如Intel reference manual所述。

我在重置计数器值后通过放置一些打印进行了一些检查,并且我确认这是正确完成的,并且我还验证了计数器继续从重置值开始计数。我还验证了计数器在重置后溢出但由于某种原因,没有产生中断。

有人可以告诉我如何在每N条指令后产生中断。任何帮助将受到高度赞赏。

1 个答案:

答案 0 :(得分:0)

不要忘记清除LVT性能计数器寄存器中的中断屏蔽位;启用进一步中断。 每次LAPIC处理性能监视中断时,此标志自动设置为1,从而阻止任何后续PMI。阅读关于LAPIC的英特尔文档第10章。