Crate uhyve_interface

Source
Expand description

§Uhyve Hypervisor Interface

The Uhyve hypercall interface works as follows:

  • On x86_64 you use an out port instruction. The address of the out-port corresponds to the hypercall you want to use. You can obtain it from the [IoPorts] enum. The data send to that port is the physical memory address (of the VM) of the parameters of that hypercall.
  • On aarch64 you write to the respective HypercallAddress. The 64-bit value written to that location is the guest’s physical memory address of the hypercall’s parameter.

Modules§

elf
Utility to place the Uhyve interface version in the elf header of the hermit kernel.
parameters
Parameters for hypercalls.

Macros§

define_uhyve_interface_version
Defines the Uhyve interface version in the note section.

Structs§

GuestPhysAddr
A 64-bit physical memory address.
GuestVirtAddr
A canonical 64-bit virtual memory address.

Enums§

Hypercall
Hypervisor calls available in Uhyve with their respective parameters. See the module level documentation on how to invoke them.
HypercallAddress
Enum containing all valid port mappings for hypercalls.

Constants§

MAX_ARGC_ENVC
The maximum number of items in an argument of environment vector.
UHYVE_INTERFACE_VERSION
The version of the Uhyve interface. Note: This is not the same as the semver of the crate but should be increased on every version bump that changes the API.
UHYVE_PORT_NETWRITE