zx_cache_flush
名称
zx_cache_flush —— 刷新CPU数据和/或指令缓存
概要
#include <zircon/syscalls.h>
zx_status_t zx_cache_flush(const void* addr, size_t size, uint32_t flags);
描述
zx_cache_flush() 刷新覆盖给定虚拟地址范围内存的CPU缓存。 如果该范围内存不可读,则线程可能会像其他数据读取一样发生故障。
flags是如下的标志位按位取或:
ZX_CACHE_FLUSH_DATA
清理(写回)数据缓存,使得在此CPU先前的写入数据在主存中可见。
ZX_CACHE_FLUSH_INVALIDATE(仅与ZX_CACHE_FLUSH_DATA组合时有效)
清理(写回)数据缓存,然后使数据缓存无效,使得在此CPU先前的写入数据在主存中可见,并且未来在此CPU上的读取将看到对主存的外部更改。
ZX_CACHE_FLUSH_INSN
同步指令缓存与数据缓存,使得在该CPU上的先前写入对取指令可见。 如果将其与ZX_CACHE_FLUSH_DATA组合使用,则先前的写操作将对主存以及取指令可见。
ZX_CACHE_FLUSH_DATA和ZX_CACHE_FLUSH_INSN标志位必须至少有一个包含在flags中。
权限
TODO(ZX-2399)
返回值
zx_cache_flush() 调用成功则返回ZX_OK,失败时返回错误码。
错误码
ZX_ERR_INVALID_ARGS:flags无效。