#kvm #bindings #generated #kernel #arm64 #x86-64 #header

kvm-bindings

使用 bindgen 生成的 Rust FFI 绑定到 KVM

13 个版本 (8 个重大更改)

使用旧的 Rust 2015

0.9.0 2024 年 7 月 24 日
0.8.1 2024 年 4 月 24 日
0.7.0 2024 年 1 月 3 日
0.6.0 2022 年 11 月 10 日
0.1.1 2019 年 1 月 24 日

Unix API 中排名第 45

Download history 5492/week @ 2024-04-22 10050/week @ 2024-04-29 10602/week @ 2024-05-06 10284/week @ 2024-05-13 9229/week @ 2024-05-20 10213/week @ 2024-05-27 11270/week @ 2024-06-03 16631/week @ 2024-06-10 10202/week @ 2024-06-17 5697/week @ 2024-06-24 6937/week @ 2024-07-01 9385/week @ 2024-07-08 9844/week @ 2024-07-15 6103/week @ 2024-07-22 7602/week @ 2024-07-29 7714/week @ 2024-08-05

每月下载量 31,967
12 个crate中使用(直接使用9个)

Apache-2.0 协议

685KB
22K SLoC

Crates.io

kvm-bindings

使用 bindgen 生成的 Rust FFI 绑定到 KVM。它目前支持以下目标架构

  • x86_64
  • arm64

此crate导出的绑定是使用与特定内核版本关联的头部文件静态生成的,并且不会与特定主机上运行的内核版本自动同步。用户必须确保特定的结构、成员或常量支持并适用于他们正在使用的内核版本。例如,从 kvm_run 结构中的 immediate_exit 字段只有在 KVM_CAP_IMMEDIATE_EXIT 能力可用时才有意义。使用无效的字段或功能可能导致未定义的行为。

使用方法

首先,将以下内容添加到您的 Cargo.toml

kvm-bindings = "0.3"

然后,将以下内容添加到您的crate根目录

extern crate kvm_bindings;

此crate还提供了对 FAM 结构的安全包装 - 在其定义中具有灵活数组成员的 FFI 结构。如果为此crate启用了 fam-wrappers 功能,则可以使用这些安全包装。示例

kvm-bindings = { version = "0.3", features = ["fam-wrappers"]}

依赖项

当为 crate 启用 fam-wrappers 功能时,此 crate 对 vmm-sys-util 有一个 optional 依赖。

它还包含对serde的可选依赖,当启用serde特性时,允许序列化绑定。绑定的序列化通过zerocopy以不透明的二进制块形式进行。由于内核的ABI兼容性,这意味着在kvm-bindingsx版本中序列化的绑定可以在crate的y版本中反序列化,即使在此期间绑定的内容已经重新生成。

重新生成绑定

有关如何生成绑定或添加对新架构的支持的详细信息,请参阅CONTRIBUTING.md

依赖项

~0–425KB