zxvmo_create_physical

摘要

创建一个引用特定连续范围的物理内存的虚拟机对象。

声明

#include <zircon/syscalls.h>

zx_status_t zx_vmo_create_physical(zx_handle_t resource,
                                   zx_paddr_t paddr,
                                   size_t size,
                                   zx_handle_t* out);

说明

zx_vmo_create_physical() 用于创建新的虚拟内存 对象 (VMO),它表示 从物理地址 paddr 开始的物理内存的 size 字节。

VMO 的内容大小将初始化为给定(未舍入)的大小。 结合使用 zx_object_get_property()ZX_PROP_VMO_CONTENT_SIZE 来读取 VMO 的内容大小将 zx_object_set_property() 与以下账号搭配使用 ZX_PROP_VMO_CONTENT_SIZE,用于设置不使用 调整 VMO 的大小

成功后会返回一个句柄,表示具有所请求 。

默认情况下,标识名将设置以下权限:

  • ZX_RIGHT_DUPLICATE - 标识名可能重复。

  • ZX_RIGHT_TRANSFER - 标识名可能会转移到其他进程。

  • ZX_RIGHT_READ - 可以读取或映射到读取权限。

  • ZX_RIGHT_WRITE - 可以写入到或利用写入权限进行映射。

  • ZX_RIGHT_EXECUTE - 可能会映射到执行权限。

  • ZX_RIGHT_MAP - 可以映射。

  • ZX_RIGHT_GET_PROPERTY - 可以使用 zx_object_get_property() 获取其属性。

  • ZX_RIGHT_SET_PROPERTY - 可以使用 zx_object_set_property() 设置其属性。

ZX_VMO_ZERO_CHILDREN 信号在新创建的 VMO 上处于有效状态。它会变为 每当创建 VMO 的子项时,它都会处于非活跃状态;当 VMO 的子项被创建时,状态会再次变为活跃状态 所有子对象均已被销毁,且这些子元素未映射到地址 空格。

备注

此系统调用创建的 VMO 不适用于 zx_vmo_read(),并且 zx_vmo_write()

权限

resource 的资源种类必须为 ZX_RSRC_KIND_MMIO

返回值

如果成功,zx_vmo_create_physical() 会返回 ZX_OK。在活动中 则会返回负的错误值。

错误

ZER_ERR_WRONG_TYPE resource 不是 Resource 对象的句柄。

ZER_ERR_ACCESS_DENIED 资源未授予对所请求的 内存范围。

ZX_ERR_INVALID_ARGS out 是无效的指针、NULL、paddrsize 不与页面对齐。

ZX_ERR_NO_MEMORY 因内存不足而失败。 用户空间没有好办法处理这种(不太可能)错误。 在将来的版本中,此错误不会再发生。

ZX_ERR_OUT_OF_RANGE请求的内容过大。

另请参阅