zx_vmo_create


英文原文快照


名称

vmo_create —— 创建VM对象

概要

  1. #include <zircon/syscalls.h>
  2. zx_status_t zx_vmo_create(uint64_t size, uint32_t options, zx_handle_t* out);

描述

vmo_create() 的功能是创建一个新的虚拟内存对象(VMO),它表示由操作系统管理的0到size字节大小的内存容器。

VMO的大小将向上舍入到下一页面边界的大小。 使用vmo_get_size() 可获取VMO当前的大小。

调用成功时返回一个句柄,表示具有所请求大小的VMO对象。

默认情况下,将在句柄上设置以下权限:

ZX_RIGHT_DUPLICATE —— 该句柄可被复制。

ZX_RIGHT_TRANSFER —— 该句柄可以被传输到另一个进程。

ZX_RIGHT_READ —— 可读取VMO或将映射权限设置为可读。

ZX_RIGHT_WRITE —— 可写入VMO或将映射权限设置为可写。

ZX_RIGHT_EXECUTE —— 可将映射权限设置为可执行。

ZX_RIGHT_MAP —— 该VMO可被映射。

ZX_RIGHT_GET_PROPERTY —— 可使用object_get_property获取其属性。

ZX_RIGHT_SET_PROPERTY —— 可使用object_set_property设置其属性。

options字段可以是0或ZX_VMO_NON_RESIZABLE以创建不能更改大小的VMO。 但不可调整大小的VMO的克隆副本却可以调整大小。

ZX_VMO_ZERO_CHILDREN信号在新创建的VMO时处于活跃状态。 每当创建VMO的克隆时它就变为非活动状态,并且当该VMO所有副本都被销毁并且不存在这些副本到地址空间的映射时它才能再次变为活动状态。

权限

TODO(ZX-2399)

返回值

vmo_create() 调用成功则返回ZX_OK,如果发生错误,则返回负的错误码。

错误码

ZX_ERR_INVALID_ARGSout是无效指针或为NULL;或options是0以外的其他任何值。

ZX_ERR_NO_MEMORY:由于内存不足导致的失败。 而用户空间无法处理这个(不太可能发生的)错误。 在将来的构建版本中,将不再出现此错误。

另见

vmo_read, vmo_write, vmo_clone, vmo_set_size, vmo_get_size, vmo_op_range, vmar_map.