zx_pager_supply_pages

摘要

將頁面提供給呼叫器擁有的 VMO。

宣告

#include <zircon/syscalls.h>

zx_status_t zx_pager_supply_pages(zx_handle_t pager,
                                  zx_handle_t pager_vmo,
                                  uint64_t offset,
                                  uint64_t length,
                                  zx_handle_t aux_vmo,
                                  uint64_t aux_offset);

說明

aux_vmo 網頁的範圍從 [aux_offsetaux_offset + length) 移至 pager_vmo 範圍 [offsetoffset + length)。在指定範圍內的任何 pager_vmo 網頁都不會 ;則應釋出 aux_vmo 的對應網頁。aux_vmo 不可 實體、連續或網頁支援,而且在指定範圍內沒有固定網頁。不限 aux_vmo 中的未修訂頁面會導致零 (或同等項目) 插入 pager_vmo。 這項作業完成後,aux_vmo 的指定區域就會完全解除。

權限

pager 必須是 ZX_OBJ_TYPE_PAGER 類型,且具有 ZX_RIGHT_MANAGE_VMO

pager_vmo 必須是 ZX_OBJ_TYPE_VMO 類型,且包含 ZX_RIGHT_WRITE

aux_vmo 必須是 ZX_OBJ_TYPE_VMO 類型,且包含 ZX_RIGHT_READZX_RIGHT_WRITE

傳回值

zx_pager_supply_pages() 會在成功時傳回 ZX_OK,否則會在失敗時傳回下列其中一個錯誤代碼。 故障時,aux_vmo 的指定範圍可能未經修改或完全取消。如果 已解除 aux_vmo,那麼 pager_vmo 中的頁面數量就會是未指定數量 。

錯誤

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

ZX_ERR_WRONG_TYPE pager 不是呼叫器處理常式,pager_vmo 不是 VMO 控制代碼,或 aux_vmo 並非 VMO 控制代碼。

ZX_ERR_INVALID_ARGS pager_vmo 不是透過 pageroffsetsize 建立的 VMO。 或 aux_offset 未對齊頁面。

ZX_ERR_ACCESS_DENIED pager 沒有 ZX_RIGHT_MANAGE_VMO,或 aux_vmo 沒有 ZX_RIGHT_READZX_RIGHT_WRITE,或 pager_vmo 沒有 ZX_RIGHT_WRITE

ZX_ERR_BAD_STATE aux_vmo 並非處於可提供必要頁面的狀態。 pager_vmo 已從 pager 卸離。

ZX_ERR_NOT_SUPPORTED aux_vmo 是實體、連續或分頁式支援的 VMO。

ZX_ERR_OUT_OF_RANGEpager_vmoaux_vmo 中指定的範圍無效。

ZX_ERR_NO_MEMORY 因記憶體不足而失敗。

另請參閱