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 選項無效。