use crate::{AxVMCrateConfig, VMBaseConfig, VMDevicesConfig, VMKernelConfig};
pub struct VmTemplateParams {
pub id: usize,
pub name: String,
pub vm_type: usize,
pub cpu_num: usize,
pub entry_point: usize,
pub kernel_path: String,
pub kernel_load_addr: usize,
pub image_location: String,
pub cmdline: Option<String>,
}
pub fn get_vm_config_template(params: VmTemplateParams) -> AxVMCrateConfig {
AxVMCrateConfig {
base: VMBaseConfig {
id: params.id,
name: params.name,
vm_type: params.vm_type,
cpu_num: params.cpu_num,
phys_cpu_ids: Some((0..params.cpu_num).collect()),
phys_cpu_sets: None,
},
kernel: VMKernelConfig {
entry_point: params.entry_point,
kernel_path: params.kernel_path,
kernel_load_addr: params.kernel_load_addr,
bios_path: None, bios_load_addr: None,
dtb_path: None, dtb_load_addr: None,
ramdisk_path: None, ramdisk_load_addr: None,
image_location: Some(params.image_location),
cmdline: params.cmdline, disk_path: None, memory_regions: vec![], },
devices: VMDevicesConfig {
emu_devices: vec![], passthrough_devices: vec![], interrupt_mode: Default::default(), excluded_devices: vec![], passthrough_addresses: vec![], },
}
}