首页 > 解决方案 > (mips) arm/arm64 上的 Cacheflush 函数

问题描述

作为项目的一部分,我尝试使用ninja buildsystem为 arm64 编译 Android10 (a Pixel 3) 的 .c 文件。此 .c 文件是已成功使用的 PoC 的一部分(因此,它应该可以以某种方式工作)。

现在的问题是:此文件包含对“cacheflush”函数的引用,该函数已为bionic/MIPS定义良好,但不适用于arm64。错误信息是:error: use of undeclared identifier 'cacheflush'

正如我所说,该示例被引用为工作。我已经安装了项目中列出的 android ndk/sdk 和其他依赖项。我还测试了包括不同的头文件(例如 cacheflush.h 和 unistd.h)

任何人都可以帮我让这个功能工作吗?非常感谢!

标签: androidarmmipsarm64

解决方案


我也在为 poc 使用“cacheflush”,如果你在基于 linux 的分发中键入“man cacheflush”,你可以在概要中看到这样的注释:

注意:在某些架构上,这个系统调用没有 glibc 包装器;见注释。

所以我猜ARM架构中没有cacheflush功能。

您可以在 ARM 指令集参考中搜索执行相同工作的指令(如 x86 中的 clflush)。


推荐阅读