摘要
清除 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 是位元或下列的 OR:
ZX_CACHE_FLUSH_DATA
清除 (寫入) 資料快取,因此之前在這個 CPU 上寫入的資料 顯示在主記憶體中
ZX_CACHE_FLUSH_INVALIDATE
(只有在與ZX_CACHE_FLUSH_DATA
合併使用時才有效)清除 (寫入) 資料快取,然後撤銷資料快取, 所有之前寫入這個 CPU 的主記憶體 讀取主要記憶體的外部變更
ZX_CACHE_FLUSH_INSN
將操作說明快取與資料快取同步處理,以便之前寫入 指示擷取時可看到這個 CPU。如果兩者結合 具有
ZX_CACHE_FLUSH_DATA
標記,那麼下列所有人都能看到先前寫入的內容: 以及指示擷取指示
至少一個 ZX_CACHE_FLUSH_DATA
和 ZX_CACHE_FLUSH_INSN
必須包含在選項中。
權限
TODO(https://fxbug.dev/42107318)
傳回值
zx_cache_flush()
會在成功時傳回 ZX_OK
,或失敗時傳回錯誤代碼。
錯誤
ZX_ERR_INVALID_ARGS
選項無效。