MCPcopy Create free account
hub / github.com/hashintel/hash / load_chip

Function load_chip

libs/darwin-kperf/codegen/src/database.rs:126–165  ·  view source on GitHub ↗
(def: &'static ChipDef)

Source from the content-addressed store, hash-verified

124}
125
126fn load_chip(def: &'static ChipDef) -> Result<ChipDatabase, LoadError> {
127 let path = Path::new(KPEP_DIR).join(format!("{}.plist", def.plist_name));
128
129 let root: PlistRoot = plist::from_file(&path).map_err(|error| LoadError { path, error })?;
130
131 let cpu = root.system.cpu;
132
133 let mut reverse_aliases: BTreeMap<String, Vec<String>> = BTreeMap::new();
134 for (alias, event_name) in cpu.aliases {
135 reverse_aliases.entry(event_name).or_default().push(alias);
136 }
137
138 let mut events: Vec<EventData> = cpu
139 .events
140 .into_iter()
141 .map(|(name, raw)| {
142 let aliases = reverse_aliases.remove(&name).unwrap_or_default();
143 EventData {
144 name,
145 description: raw.description.unwrap_or_default(),
146 counters_mask: raw.counters_mask,
147 number: raw.number,
148 fixed_counter: raw.fixed_counter,
149 fallback: raw.fallback,
150 aliases,
151 }
152 })
153 .collect();
154
155 events.sort_by(|left, right| left.name.cmp(&right.name));
156
157 Ok(ChipDatabase {
158 def,
159 marketing_name: cpu.marketing_name,
160 fixed_counters: cpu.fixed_counters,
161 config_counters: cpu.config_counters,
162 power_counters: cpu.power_counters,
163 events,
164 })
165}

Callers

nothing calls this directly

Calls 10

OkInterface · 0.85
map_errMethod · 0.80
entryMethod · 0.80
collectMethod · 0.80
pushMethod · 0.65
joinMethod · 0.45
mapMethod · 0.45
into_iterMethod · 0.45
removeMethod · 0.45
cmpMethod · 0.45

Tested by

no test coverage detected