姓名
查询寻呼机拥有的 VMO 的相关统计信息。
概要
#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()
之前通过分页器创建的。
如果调用方还希望重置查询的统计信息,则 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_RESET_VMO_STATS
选项,此调用会使用可查询状态,从而对未来的 zx_pager_query_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_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()