zx_pager_query_vmo_stats

名稱

以網頁器擁有的 VMO 中的查詢呼叫器相關統計資料。

SYNOPSIS

#include <zircon/syscalls.h>

zx_status_t zx_pager_query_vmo_stats(zx_handle_t pager,
                                     zx_handle_t pager_vmo,
                                     uint32_t options,
                                     void* buffer,
                                     size_t buffer_size);

說明

查詢 pager_vmo 與任何網頁器相關統計資料,例如pager_vmo 是否經過修改。 pager_vmo 必須事先是由 zx_pager_create_vmo() 透過 pager 建立。

如果呼叫端也想重設查詢的統計資料,則 options 設為 ZX_PAGER_RESET_VMO_STATSoptions 值為 0 時,系統不會重設任何狀態,且會執行純查詢。

bufferzx_pager_vmo_stats_t 結構體的指標,用於保存 且 buffer_size 的大小應足以容納結構體。

typedef struct zx_pager_vmo_stats {
  // Will be set to ZX_PAGER_VMO_STATS_MODIFIED if the VMO was modified, or 0 otherwise.
  // Note that this can be set to 0 if a previous zx_pager_query_vmo_stats() call specified the
  // ZX_PAGER_RESET_VMO_STATS option, which resets the modified state.
  uint32_t modified;
} zx_pager_vmo_stats_t;

請注意,此呼叫可能會對未來zx_pager_query_vmo_stats()通話 可查詢的狀態 (如果指定 ZX_PAGER_RESET_VMO_STATS 選項)。舉例來說 zx_vmo_write() 後面加上兩個連續 zx_pager_query_vmo_stats()ZX_PAGER_RESET_VMO_STATS 選項,只有第一個選項會將 modified 設為 ZX_PAGER_VMO_STATS_MODIFIED。因為在第一次嘗試 zx_pager_query_vmo_stats(),第二個 zx_pager_query_vmo_stats() 會傳回 modified 為 0。

權限

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

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

傳回值

zx_pager_query_vmo_stats() 會在成功時傳回 ZX_OK。故障時,會發生負錯誤 。

錯誤

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

ZX_ERR_WRONG_TYPE pager 不是 Pager 處理常式,或 pager_vmo 不是 VMO 控制代碼。

ZX_ERR_ACCESS_DENIED pager 沒有 ZX_RIGHT_MANAGE_VMOpager_vmo ZX_RIGHT_READ

ZX_ERR_INVALID_ARGS pager_vmo 不是透過 pager 建立的 VMO,或 options 不是 0 或 ZX_PAGER_RESET_VMO_STATSbuffer 為無效指標。

ZX_ERR_BUFFER_TOO_SMALL buffer_size 不夠大,無法容納 zx_pager_vmo_stats_t

另請參閱