15 releases (9 breaking)
Uses old Rust 2015
0.10.0 | Sep 23, 2024 |
---|---|
0.9.0 | Jul 24, 2024 |
0.7.0 | Jan 3, 2024 |
0.6.0 | Nov 10, 2022 |
0.1.1 | Jan 24, 2019 |
#114 in Unix APIs
36,377 downloads per month
Used in 12 crates
(10 directly)
1MB
30K
SLoC
kvm-bindings
Rust FFI bindings to KVM, generated using bindgen. It currently has support for the following target architectures:
- x86_64
- arm64
- riscv64
The bindings exported by this crate are statically generated using header files
associated with a specific kernel version, and are not automatically synced with
the kernel version running on a particular host. The user must ensure that
specific structures, members, or constants are supported and valid for the
kernel version they are using. For example, the immediate_exit
field from the
kvm_run
structure is only meaningful if the KVM_CAP_IMMEDIATE_EXIT
capability is available. Using invalid fields or features may lead to undefined
behaviour.
Usage
First, add the following to your Cargo.toml
:
kvm-bindings = "0.3"
Next, add this to your crate root:
extern crate kvm_bindings;
This crate also offers safe wrappers over FAM structs - FFI structs that have
a Flexible Array Member in their definition.
These safe wrappers can be used if the fam-wrappers
feature is enabled for
this crate. Example:
kvm-bindings = { version = "0.3", features = ["fam-wrappers"]}
Dependencies
The crate has an optional
dependency to
vmm-sys-util when enabling the
fam-wrappers
feature.
It also has an optional dependency on serde
when enabling the
serde
feature, to allow serialization of bindings. Serialization of
bindings happens as opaque binary blobs via zerocopy
.
Due to the kernel's ABI compatibility, this means that bindings serialized
in version x
of kvm-bindings
can be deserialized in version y
of the
crate, even if the bindings have had been regenerated in the meantime.
Regenerating Bindings
Please see CONTRIBUTING.md
for details on how to generate the bindings
or add support for new architectures.
Dependencies
~0–440KB