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 的数量无需与机器上的物理 CPU 数量一致。

entry 是一个指令指针,用于指示应在客户机物理内存中的哪个位置开始执行 VCPU。

out 会绑定到创建它的线程,并且对其操作的所有系统调用都必须从同一个线程进行调用,zx_vcpu_interrupt() 除外。

一个线程中一次只能存在一个 vCPU。线程可以在关闭现有 vCPU 后创建另一个 vCPU。

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

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

ZX_RIGHT_DUPLICATE - out 可能重复。

ZX_RIGHT_TRANSFER - 我们可能会通过频道转让

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 guest 没有 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 由于内存不足而失败。 用户空间没有什么方法来处理此(不太可能)错误。在以后的 build 中,此错误不会再发生。

ZX_ERR_WRONG_TYPE guest 不是访客的标识名。

另请参阅