zx_vcpu_create


英文原文快照


名称

vcpu_create —— 创建VCPU

概要

  1. #include <zircon/syscalls.h>
  2. #include <zircon/syscalls/hypervisor.h>
  3. zx_status_t zx_vcpu_create(zx_handle_t guest, uint32_t options,
  4. zx_vaddr_t entry, zx_handle_t* out);

描述

vcpu_create() 的功能是在客户虚拟机中创建VCPU,并允许其在虚拟机中执行。 可为每个客户虚拟机创建一个或多个VCPU,其数量无需与机器上的物理CPU的数量匹配。

entry是用于表示VCPU开始执行的入口在客户物理内存中位置的指令指针。

vcpu被绑定到创建它的线程,并且必须从该线程调用操作它的所有系统调用,但vcpu_interrupt() 调用除外。

注意:VCPU是虚拟CPU的缩写。

默认情况下,句柄out将被设置以下权限:

ZX_RIGHT_DUPLICATE —— out可被复制。

ZX_RIGHT_TRANSFER —— out可通过通道(channel)传输。

ZX_RIGHT_EXECUTE —— out可恢复(或开始)执行

ZX_RIGHT_SIGNAL —— out可中断执行

ZX_RIGHT_READ —— out可被读取其状态

ZX_RIGHT_WRITE —— out可被写入状态

权限

TODO(ZX-2399)

返回值

vcpu_create() 调用成功则返回ZX_OK。 如果调用失败,则返回负的错误码。

错误码

ZX_ERR_ACCESS_DENIEDguest缺少ZX_RIGHT_MANAGE_PROCESS权限。

ZX_ERR_BAD_HANDLEguest是无效句柄。

ZX_ERR_INVALID_ARGS:下列情况之一,args包含无效的参数;out是无效指针;options是非零值。

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

ZX_ERR_WRONG_TYPEguest不是客户虚拟机类型的句柄。

另见

guest_create, guest_set_trap, vcpu_resume, vcpu_interrupt, vcpu_read_state, vcpu_write_state.