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_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 pagerpager_vmo 不是有效的句柄。

ZX_ERR_WRONG_TYPE pager 不是分页器句柄,或 pager_vmo 不是 VMO 句柄。

ZX_ERR_ACCESS_DENIED 分页器不含 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

另请参阅