MCPcopy Create free account
hub / github.com/cloud-hypervisor/cloud-hypervisor / parse

Method parse

vmm/src/config.rs:683–769  ·  view source on GitHub ↗
(cpus: &str)

Source from the content-addressed store, hash-verified

681
682impl CpusConfig {
683 pub fn parse(cpus: &str) -> Result<Self> {
684 let mut parser = OptionParser::new();
685 parser
686 .add("boot")
687 .add("max")
688 .add("topology")
689 .add("kvm_hyperv")
690 .add("max_phys_bits")
691 .add("affinity")
692 .add("features")
693 .add("nested")
694 .add("core_scheduling");
695 parser.parse(cpus).map_err(Error::ParseCpus)?;
696
697 let boot_vcpus: u32 = parser
698 .convert("boot")
699 .map_err(Error::ParseCpus)?
700 .unwrap_or(DEFAULT_VCPUS);
701 let max_vcpus: u32 = parser
702 .convert("max")
703 .map_err(Error::ParseCpus)?
704 .unwrap_or(boot_vcpus);
705 let topology = parser.convert("topology").map_err(Error::ParseCpus)?;
706 let kvm_hyperv = parser
707 .convert::<Toggle>("kvm_hyperv")
708 .map_err(Error::ParseCpus)?
709 .unwrap_or(Toggle(false))
710 .0;
711 let max_phys_bits = parser
712 .convert::<u8>("max_phys_bits")
713 .map_err(Error::ParseCpus)?
714 .unwrap_or(DEFAULT_MAX_PHYS_BITS);
715 let affinity = parser
716 .convert::<Tuple<u32, Vec<usize>>>("affinity")
717 .map_err(Error::ParseCpus)?
718 .map(|v| {
719 v.0.iter()
720 .map(|(e1, e2)| CpuAffinity {
721 vcpu: *e1,
722 host_cpus: e2.clone(),
723 })
724 .collect()
725 });
726 let features_list = parser
727 .convert::<StringList>("features")
728 .map_err(Error::ParseCpus)?
729 .unwrap_or_default();
730
731 #[allow(unused_mut)]
732 let mut features = CpuFeatures::default();
733 {
734 #[cfg(target_arch = "x86_64")]
735 for feature in features_list.0 {
736 match feature.as_str() {
737 "amx" => features.amx = true,
738 _ => return Err(Error::InvalidCpuFeatures(feature)),
739 }
740 }

Callers 15

parse_api_socketFunction · 0.45
start_vmmFunction · 0.45
parse_formatFunction · 0.45
logger_tid_tokenFunction · 0.45
resize_configFunction · 0.45
verify_sparse_fileFunction · 0.45
process_rss_kibFunction · 0.45

Calls 15

newFunction · 0.85
ToggleClass · 0.85
ByteSizedClass · 0.85
addMethod · 0.80
convertMethod · 0.80
iterMethod · 0.80
add_allMethod · 0.80
parse_subsetMethod · 0.80
as_bytesMethod · 0.80
try_intoMethod · 0.80
is_setMethod · 0.80