名稱
以網頁器擁有的 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_STATS
。
options 值為 0 時,系統不會重設任何狀態,且會執行純查詢。
buffer 為 zx_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
pager 或 pager_vmo 不是有效的帳號代碼。
ZX_ERR_WRONG_TYPE
pager 不是 Pager 處理常式,或 pager_vmo 不是 VMO 控制代碼。
ZX_ERR_ACCESS_DENIED
pager 沒有 ZX_RIGHT_MANAGE_VMO
或 pager_vmo
ZX_RIGHT_READ
。
ZX_ERR_INVALID_ARGS
pager_vmo 不是透過 pager 建立的 VMO,或 options 不是 0 或
ZX_PAGER_RESET_VMO_STATS
或 buffer 為無效指標。
ZX_ERR_BUFFER_TOO_SMALL
buffer_size 不夠大,無法容納 zx_pager_vmo_stats_t
。
另請參閱
zx_pager_create_vmo()
zx_pager_detach_vmo()
zx_pager_op_range()
zx_pager_query_dirty_ranges()
zx_pager_supply_pages()