zx_vcpu_create
名称
vcpu_create —— 创建VCPU
概要
#include <zircon/syscalls.h>
#include <zircon/syscalls/hypervisor.h>
zx_status_t zx_vcpu_create(zx_handle_t guest, uint32_t options,
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_DENIED:guest缺少ZX_RIGHT_MANAGE_PROCESS权限。
ZX_ERR_BAD_HANDLE:guest是无效句柄。
ZX_ERR_INVALID_ARGS:下列情况之一,args包含无效的参数;out是无效指针;options是非零值。
ZX_ERR_NO_MEMORY:由于内存不足导致的失败。 而用户空间无法处理这个(不太可能发生的)错误。 在将来的构建版本中,将不再出现此错误。
ZX_ERR_WRONG_TYPE:guest不是客户虚拟机类型的句柄。
另见
guest_create, guest_set_trap, vcpu_resume, vcpu_interrupt, vcpu_read_state, vcpu_write_state.