zx_vmo_create_physical


英文原文快照


名称

vmo_create_physical —— 创建一个指向特定连续物理内存范围的VM对象

概要

  1. #include <zircon/syscalls.h>
  2. zx_status_t zx_vmo_create_physical(zx_handle_t resource, zx_paddr_t paddr,
  3. size_t size, zx_handle_t* out);

描述

vmo_create_physical() 的功能是创建一个新的虚拟内存对象(VMO),它表示从物理地址paddr开始的连续size字节的内存区域。

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

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

ZX_RIGHT_DUPLICATE —— 该句柄可被复制。

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

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

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

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

ZX_RIGHT_MAP —— 该VMO可被映射。

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

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

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

注释

此系统调用创建的VMO不能与vmo_read()vmo_write() 一起使用。

权限

TODO(ZX-2399)

返回值

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

错误码

ZER_ERR_WRONG_TYPEresource不是资源类型的句柄。

ZER_ERR_ACCESS_DENIEDresource不具有对请求的内存区域的访问权限。

ZX_ERR_INVALID_ARGS:下列情况之一,out是无效指针或为NULLpaddrsize大小不是页面对齐的。

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

另见

vmar_map.