如何在 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.
我找到 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.