#[derive(Copy, Clone)]
pub struct CoreInfo {
pub core_id: u32,
pub frequency_hz: u64,
pub raw_temp: Option<u64>,
}
pub fn detect_cores(out: &mut [CoreInfo]) -> usize {
if let Some(info) = super::detect::detect_cpu_info() {
let total = info.logical_cores as usize;
let base_freq = info.frequency_hz;
let mut count = 0usize;
while count < out.len() && count < total {
out[count] = CoreInfo {
core_id: count as u32,
frequency_hz: base_freq,
raw_temp: crate::arch::shim::read_msr(0x19C),
};
count += 1;
}
return count;
}
if crate::arch::shim::read_aarch64_midr().is_some() {
let core_count = 1usize;
let mut count = 0usize;
while count < out.len() && count < core_count {
out[count] = CoreInfo {
core_id: count as u32,
frequency_hz: 0,
raw_temp: None,
};
count += 1;
}
return count;
}
0
}