摘要
為 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