Skip to content

Latest commit

 

History

History
79 lines (50 loc) · 2.09 KB

vcpu_create.md

File metadata and controls

79 lines (50 loc) · 2.09 KB

zx_vcpu_create

NAME

vcpu_create - create a VCPU

SYNOPSIS

#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);

DESCRIPTION

vcpu_create() creates a VCPU within a guest, which allows for execution within the virtual machine. One or more VCPUs may be created per guest, where the number of VCPUs does not need to match the number of physical CPUs on the machine.

entry is the instruction pointer used to indicate where in guest physical memory execution of the VCPU should start.

vcpu is bound to the thread that created it, and all syscalls that operate on it must be called from the same thread, with the exception of vcpu_interrupt().

N.B. VCPU is an abbreviation of virtual CPU.

The following rights will be set on the handle out by default:

ZX_RIGHT_DUPLICATEout may be duplicated.

ZX_RIGHT_TRANSFERout may be transferred over a channel.

ZX_RIGHT_EXECUTEout may have its execution resumed (or begun)

ZX_RIGHT_SIGNALout may be interrupted

ZX_RIGHT_READout may have its state read

ZX_RIGHT_WRITEout may have its state written

RIGHTS

TODO(ZX-2399)

RETURN VALUE

vcpu_create() returns ZX_OK on success. On failure, an error value is returned.

ERRORS

ZX_ERR_ACCESS_DENIED guest does not have the ZX_RIGHT_MANAGE_PROCESS right.

ZX_ERR_BAD_HANDLE guest is an invalid handle.

ZX_ERR_INVALID_ARGS args contains an invalid argument, or out is an invalid pointer, or options is nonzero.

ZX_ERR_NO_MEMORY Failure due to lack of memory. There is no good way for userspace to handle this (unlikely) error. In a future build this error will no longer occur.

ZX_ERR_WRONG_TYPE guest is not a handle to a guest.

SEE ALSO

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