zx_guest_create

NAME

guest_create - create a guest

SYNOPSIS

#include <zircon/syscalls.h>

zx_status_t zx_guest_create(zx_handle_t resource, uint32_t options,
                            zx_handle_t physmem_vmo, zx_handle_t* out);

DESCRIPTION

guest_create() creates a guest, which is a virtual machine that can be run within the hypervisor, with physmem_vmo used to represent the physical memory of the guest.

To create a guest, a resource of ZX_RSRC_KIND_HYPERVISOR must be supplied.

In order to begin execution within the guest, a VCPU must be created using vcpu_create(), and then run using vcpu_resume().

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_WRITE - A trap to be may be set using guest_set_trap(), or a VCPU to be created using vcpu_create().

RETURN VALUE

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

ERRORS

ZX_ERR_ACCESS_DENIED resource is not of ZX_RSRC_KIND_HYPERVISOR, or physmem_vmo does not have the ZX_RIGHT_READ, ZX_RIGHT_WRITE, and ZX_RIGHT_EXECUTE rights.

ZX_ERR_BAD_HANDLE physmem_vmo is an invalid handle.

ZX_ERR_INVALID_ARGS out is an invalid pointer, or options is nonzero.

ZX_ERR_NO_MEMORY Temporary failure due to lack of memory.

ZX_ERR_WRONG_TYPE resource is not a handle to a resource, or physmem_vmo is not a handle to a VMO.

SEE ALSO

guest_set_trap, vcpu_create, vcpu_resume, vcpu_interrupt, vcpu_read_state, vmo_create, vcpu_write_state.