zx_vcpu_create

摘要

创建 vCPU。

声明

#include <zircon/syscalls.h>

zx_status_t zx_vcpu_create(zx_handle_t guest,
                           uint32_t options,
                           zx_vaddr_t entry,
                           zx_handle_t* out);

说明

zx_vcpu_create() 可在客户机中创建一个 vCPU,从而允许执行 虚拟机内的资源可以为每个客户机创建一个或多个 vCPU,其中 vCPU 的数量不必与 虚拟机。

entry 是用于指示客户机物理组件位置的指令指针 即开始执行此 vCPU 的内存操作。

out 绑定到创建它的线程,以及运行它的所有系统调用。 必须从同一个线程中调用,但以下情况除外: zx_vcpu_interrupt()

一个线程上一次只能存在一个 vCPU。一个线程可以创建另一个 vCPU 并在关闭现有广告后移动

N.B.VCPU 是虚拟 CPU 的缩写。

默认情况下,系统会为标识名设置以下权限:out

ZX_RIGHT_DUPLICATE - out 可能重复。

ZX_RIGHT_TRANSFER - 可以通过通道传输 out

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

ZX_RIGHT_SIGNAL - out 可能会中断

ZX_RIGHT_READ - 可以读取 out 状态

ZX_RIGHT_WRITE - 可能写入其状态

权限

guest 的类型必须为 ZX_OBJ_TYPE_GUEST 且具有 ZX_RIGHT_MANAGE_THREAD

返回值

如果成功,zx_vcpu_create() 会返回 ZX_OK。如果失败,错误值为 返回。

错误

ZX_ERR_ACCESS_DENIED 访客没有 ZX_RIGHT_MANAGE_THREAD

ZX_ERR_BAD_HANDLE guest 是无效的句柄。

ZX_ERR_BAD_STATE:表示线程目前有一个 vCPU。只能有一个 vCPU 同时在一个线程上保持活跃状态

ZX_ERR_INVALID_ARGS args 包含无效参数,或 out 是 指针无效,或者 options 为非零值。

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

ZX_ERR_WRONG_TYPE guest 不是访客的句柄。

另请参阅