zx_vmo_set_cache_policy

摘要

為 VMO 保存的頁面設定快取政策。

宣告

#include <zircon/syscalls.h>

zx_status_t zx_vmo_set_cache_policy(zx_handle_t handle, uint32_t cache_policy);

說明

zx_vmo_set_cache_policy() 會為虛擬記憶體設定快取政策 物件 (VMO)。通常用於 VMO 直接指向實體記憶體這類 VMO 通常僅提供給 透過匯流排通訊協定介面存取使用者空間 因此這個系統呼叫通常只會 主要用於處理裝置記憶體的驅動程式這場通話也可用於 一般記憶體支援 VMO,具有類似限制和用途

控制代碼必須具有 ZX_RIGHT_MAP 權利,才能進行此呼叫 。此外,目前沒有任何程序對應 VMO 含有任何子項、可能是兒童本身,或是具有固定頁面。承諾 網頁會從快取狀態轉換時允許,且系統會 經過清理並失效

cache_policy 快取標記可以使用:

  • ZX_CACHE_POLICY_CACHED - 使用硬體快取。在 Aarch64 中,這等同於 記憶體、外部寫入非暫時性讀取和寫入分配、內部寫入非暫時性 讀取和寫入配置記憶體屬性

  • ZX_CACHE_POLICY_UNCACHED - 停用快取。在 Aarch64 上,這會對應至 Device-nGnRnE 記憶體屬性

  • ZX_CACHE_POLICY_UNCACHED_DEVICE - 停用快取,並視為裝置記憶體。這是 取決於架構,且可能在部分物件中等同於 ZX_CACHE_POLICY_UNCACHED 架構在 Aarch64 上,這可對應至 Device-nGnRE 記憶體屬性。

  • ZX_CACHE_POLICY_WRITE_COMBINING - 與寫入合併取消快取。在 Aarch64 中,這對應 一般記憶體的未快取記憶體屬性

權限

handle 必須是 ZX_OBJ_TYPE_VMO 類型,且包含 ZX_RIGHT_MAP

傳回值

zx_vmo_set_cache_policy() 會在成功時傳回 ZX_OK。如果發生以下情況: 失敗時,會傳回負的錯誤值。

錯誤

這個 VMO 已設定 ZX_ERR_ACCESS_DENIED 快取政策,且 不能變更,或控制代碼缺少 ZX_RIGHT_MAP

ZX_ERR_BAD_HANDLE 帳號代碼不是有效的帳號代碼。

ZX_ERR_INVALID_ARGS cache_policy 包含未列出的標記 或 cache_policy 包含無效的快取政策旗標組合。

ZX_ERR_NOT_SUPPORTED VMO 帳號代碼對應並非為持股份 實體記憶體

ZX_ERR_BAD_STATE VMO 目前存在,因此無法變更快取政策 對應、具有子項、是子項本身、具有固定頁面,或已提交頁面 而且目前沒有快取 VMO

另請參閱