由于OH系统下的dd无法使用oflag iflag =direct 参数 导致在OH系统下使用dd命令测试硬盘速率测出来的很不真实(虽然可以尝试移植busybox来实现,但尝试了比loongarch64条件下比较困难),所以移植fio工具 此工具可以使用direct=1参数,就可以跳过缓存直接写入磁盘,从而获取真实的读写速度,例如USB2.0和USB3.0是否可用。
对fio文件分析,参考文件夹下的其他架构写法,添加Loongarch64架构支持
1、/fio-3.12/arch 下 添加 arch-loongarch64.h 文件
 

此文件内容参考其他的架构编写,基本就是改个名字就行,其余不变

arch.h下添加arch_loongarch64的选项 用于编译时能够找到loongarch64架构选项下的CPU

经过反复对比之后各架构不通的根源在于/fio-3.12/os/os-linux-syscall.h 下接口的调用号不同,理论上只需要找到loongarch64架构下使用的调用号,就可以移植完成。
SDK下的找到loongarch64编译参考的架构号
发现其采用了#include <asm-generic/unistd.h> 也就是通用版本的架构号,查看一下这个通用版本架构号的文件

按着对应接口移植一下,添加以下代码

 

基本大功告成,但是编译时出现了问题,原因是某些变量的类型好像不适配,但是这里没有保留debug记录,其实也就是修改一下变量类型,可以自行AI解决
最后编写build.sh编译脚本,来编译fio,因为现在OH编译用Clang了,所以要替换一下GCC相关的变量。此脚本也可以用于其他工具的编译,修改一下OHOS_SDK的工具链路径即可。

最后./build.sh执行一下,在install文件夹下就可以找到输出的文件了
至此fio完整移植完毕。

fio 还有一个libaio的库,此库是用于fio使用时 engine的参数,此参数可以使得fio使用异步写入,测试结果更真实,但是,尝试编译了库导入之后,发现还是不完全能使用,所以也一并发出来,有大佬能够实现肯定更好。

相关文件下载
fio(Loongarch64).zip
8.03 MB
下载
Logo

社区规范:仅讨论OpenHarmony相关问题。

更多推荐