axvm
路径:
virtualization/axvm类型:库 crate 分层:组件层 / 可复用基础组件 版本:0.2.3文档依据:Cargo.toml、README.md、src/lib.rs、src/vm.rs、src/vcpu.rs、src/hal.rs、src/config.rs
axvm 是 Axvisor 虚拟化软件栈中的“VM 资源管理层”。它不负责 Hypervisor 顶层编排,也不直接实现所有架构相关虚拟化细节,而是把虚拟机对象、vCPU 列表、客户机地址空间、设备集合和生命周期状态封装成一个统一的 AxVM 抽象,供上层 VMM 直接使用。
架构设计
设计定位
从职责上看,axvm 位于三类组件的交汇处:
- 向下依赖
axvm-types、各架构 vCPU crate、axaddrspace、axdevice等组件,承接 vCPU、地址 空间和设备模型。 - 向外通过
AxVMHal把宿主能力注入进来,例如地址翻译、时间、当前 VM/vCPU/pCPU 信息和中断注入。 - 向上被 Axvisor 的
vmm层直接调用,作为真正的 VM 实例与生命周期实体。
可以把 axvm 理解为“可被 Hypervisor 编排的 VM 对象层”,而不是顶层 Hypervisor 程序。
模块结构
src/lib.rs:crate 入口,导出AxVM、AxVMRef、VMMemoryRegion、VMStatus、config、AxVMHal与has_hardware_support()。src/vm.rs:核心实现文件,定义AxVM、内部可变/不可变状态、内存区管理、状态切换、init()、boot()、shutdown()、run_vcpu()等。src/vcpu.rs:AxVM 自有 vCPU wrapper、状态机、current-vCPU 绑定和架构适配层,按x86_64、riscv64、aarch64、loongarch64选择具体后端。src/hal.rs:定义AxVMHaltrait,规定宿主必须提供的能力边界。src/config.rs:把axvmconfig的 TOML 侧配置转成运行时AxVMConfig、AxVCpuConfig、VMImageConfig、PhysCpuList等结构。