The kvm-ioctls crate provides safe wrappers over the KVM API, a set of ioctls used for creating and configuring Virtual Machines (VMs) on Linux. The ioctls are accessible through four structures:
Kvm
- wrappers over system ioctlsVmFd
- wrappers over VM ioctlsVcpuFd
- wrappers over vCPU ioctlsDeviceFd
- wrappers over device ioctls
For further details check the KVM API as well as the code documentation.
The kvm-ioctls can be used on x86_64, aarch64 and riscv64 (experimental).
Our Continuous Integration (CI) pipeline is implemented on top of Buildkite. For the complete list of tests, check our CI pipeline.
Each individual test runs in a container. To reproduce a test locally, you can use the dev-container on x86_64, arm64 and riscv64.
# For running riscv64 tests, replace v47 with v47-riscv. This provides an
# emulated riscv64 environment on a x86_64 host.
docker run --device=/dev/kvm \
-it \
--security-opt seccomp=unconfined \
--volume $(pwd)/kvm-ioctls:/kvm-ioctls \
rustvmm/dev:v47
cd kvm-ioctls/
cargo test
For more details about the integration tests that are run for kvm-ioctls
,
check the rust-vmm-ci readme.