
OS在启动时,会将底层硬件信息载入到相应的文件节点中,这样,位于EL0层的用户就可以通过读取这些文件节点来获取这些信息,比较常用的有两个:
1)/sys/devices/system/cpu:
该文件夹下保存了较全的CPU信息文件,并按单个CPU进行区分,读取其中某一个的regs文件目录就可以获得相应的CPU详情信息,如我们尝试获取CPU0的相关信息:可以看到,我们读取的仍然是MIDR_EL1寄存器相对应的信息,并且是未解析的数据,需要对应上文介绍的方法进行解析。并且目前没有在这个文件夹下找到CPUFlags的相关的信息,如果后续找到其所在位置,会刷新。2)/proc/cpuinfo:通过读取cpuinfo可以看到,通过这种方法获取的CPU详情,是进行过解析的,对原始数据进行了拆分,并且是包含了CPUFlag信息的,但仍与X86下的结果有较大不同,各个key所对应的信息仍然需要根据表单进行解析才能转变为人为可读的信息。2.使用LSCPU命令读取
Linux内核的开发者显然也发现了上文介绍的两种方法获取信息不够全面且需要二次解析的问题,因此在Linux外围工具组util-linux/lscpu(wiki)中进行了改进,从2.32版本开始增加了对ARM平台CPU信息的解析,从而提供人为可读的内容(由于2019年11月才合入相关Patch,HiSilicon芯片的解析需要手动编译最新主干代码才能实现)。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)