zx_cache_flush

摘要

清空 CPU 数据和/或指令缓存。

声明

#include <zircon/syscalls.h>

zx_status_t zx_cache_flush(const void* addr, size_t size, uint32_t options);

说明

zx_cache_flush() 清空指定缓存中覆盖内存的 CPU 缓存 虚拟地址范围如果该内存范围不可读取,则 线程可能会像读取数据时那样发生故障

options 是以下项的按位或:

  • ZX_CACHE_FLUSH_DATA

    清理(回写)数据缓存,使此 CPU 上之前写入的数据 在主内存中可见

  • ZX_CACHE_FLUSH_INVALIDATE (仅在与 ZX_CACHE_FLUSH_DATA 结合使用时有效)

    清理(回写)数据缓存,然后使数据缓存失效, 之前在此 CPU 上写入的内容会在主内存和将来可见 在此 CPU 上进行读取操作会看到主内存的外部更改。

  • ZX_CACHE_FLUSH_INSN

    将指令缓存与数据缓存同步,以便查看之前的写入数据 对指令提取可见如果合并 ZX_CACHE_FLUSH_DATA,则之前写入的内容将对 以及提取指令

至少 ZX_CACHE_FLUSH_DATAZX_CACHE_FLUSH_INSN 中的一个 必须包含在 options 中。

权限

TODO(https://fxbug.dev/42107318)

返回值

zx_cache_flush() 在成功时返回 ZX_OK,或者在失败时返回错误代码。

错误

ZX_ERR_INVALID_ARGSoptions 无效。