摘要
创建 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 不是访客的句柄。
另请参阅
zx_guest_create()
zx_guest_set_trap()
zx_vcpu_enter()
zx_vcpu_interrupt()
zx_vcpu_kick()
zx_vcpu_read_state()
zx_vcpu_write_state()