zx_pager_query_vmo_stats

姓名

查询寻呼机拥有的 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_vmopager_vmo 必须是 zx_pager_create_vmo() 之前通过分页器创建的。

如果调用方还希望重置查询的统计信息,则 options 可以是 ZX_PAGER_RESET_VMO_STATSoptions 值为 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 pagerpager_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

另请参阅