我正在 OS X (10.8.4) 上实现我的第一个驱动程序。我的驱动程序应该每秒读取每个处理器上的 MSR (0x198) 并将值打印到 system.log。
我正在使用 IOWorkLoop 和 IOTimerEventSource 每秒唤醒一次并调用一个打印 MSR 值的函数,但我找不到任何关于如何在所有处理器上调用该函数的指南/文档。
在这种情况下,您建议使用什么机制?
我正在 OS X (10.8.4) 上实现我的第一个驱动程序。我的驱动程序应该每秒读取每个处理器上的 MSR (0x198) 并将值打印到 system.log。
我正在使用 IOWorkLoop 和 IOTimerEventSource 每秒唤醒一次并调用一个打印 MSR 值的函数,但我找不到任何关于如何在所有处理器上调用该函数的指南/文档。
在这种情况下,您建议使用什么机制?
找到了解决方案:
void mp_rendezvous_no_intrs(void (*action_func)(void *), void *arg)
这将在所有内核上运行带有参数arg的函数action_func 。
你可以在这里找到这个函数的源代码: http ://www.opensource.apple.com/source/xnu/xnu-1456.1.26/osfmk/i386/mp.c