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 是位元或下列的 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_DATAZX_CACHE_FLUSH_INSN 必須包含在選項中。

權限

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

傳回值

zx_cache_flush() 會在成功時傳回 ZX_OK,或失敗時傳回錯誤代碼。

錯誤

ZX_ERR_INVALID_ARGS 選項無效。