如何在 macOS KEXT 中获取当前处理器 ID

How do i get current processor id in macOS KEXT

我找到 kern/processor.h 个包含 current_processor() 的文件。

但我不能使用 current_processor() 即使我包含 kern/processor.h 文件。

是否有获取当前处理器 ID 的方法?

添加 030420:我需要任何获取当前处理器 ID 的方法,并且应该可以在 KEXT 中使用这些方法。 current_processor(), cpu_number() 不适用于 KEXT。

<kern/cpu_number.h>中声明了以下函数:

extern int  cpu_number(void);

和 returns 当前正在执行代码的 CPU 的索引。

请注意,这在 不受支持的 KPI 中,因此您需要 link 反对 com.apple.kpi.unsupported

另请注意,除非禁用抢占,否则结果将毫无意义,这当然通常不是这种情况,只有当自旋锁被持有时,或者当 运行ning 在主中断处理程序中时。启用抢占意味着可以随时重新安排 运行ning 线程,因此当您的代码 使用 时,它通过调用上述方法获得的 CPU 编号功能,它可能已经被重新安排到 运行 在不同的 CPU.