CPU 功能
1.ABI:使用预处理器的预定义宏
通常,在构建时使用 #ifdef 及以下各项确定 ABI 最为方便:
对于 32 位 ARM,使用 __arm__
对于 64 位 ARM,使用 __aarch64__
对于 32 位 X86,使用 __i386__
对于 64 位 X86,使用 __x86_64__
2. CPU 核心计数:使用 libc 的 sysconf(3)
既可以查询 _SC_NPROCESSORS_CONF(系统中的 CPU 核心数),又可以查询 _SC_NPROCESSORS_ONLN(当前可供使用的 CPU 核心数)。
复制代码
3.功能:使用 libc 的 getauxval(3)
Android 的 C 库开始支持 getauxval(3)方法(API>18),AT_HWCAP 和 AT_HWCAP2 参数会返回列出特定 CPU 功能的位掩码。
4.Google cpu_features 库
Google 的 cpu_features 库凭借其对特定 SoC 的了解(通过解析 /proc/cpuinfo 掌握相应的 SoC),解决了 AT_HWCAP 在某些设备上不准确问题。例如,一些旧设备宣称拥有整数除法指令,但实际上并没有。
5.NDK cpufeatures 库(已弃用)
版权声明: 本文为 InfoQ 作者【Changing Lin】的原创文章。
原文链接:【http://xie.infoq.cn/article/ca46e9eea03b0e85714848ce4】。文章转载请联系作者。
评论