mirror of
https://github.com/denoland/deno.git
synced 2025-01-11 00:21:05 -05:00
fix(ext/node): Ensure os.cpus() works on arm64 linux (#22302)
`/proc/cpuinfo` on ARM doesn't have the model name per CPU, so we leave those as "unknown".
This commit is contained in:
parent
9955cbdb56
commit
33d12c1d57
1 changed files with 11 additions and 4 deletions
|
@ -245,11 +245,13 @@ pub fn cpu_info() -> Option<Vec<CpuInfo>> {
|
|||
let fp = std::fs::File::open("/proc/stat").ok()?;
|
||||
let reader = std::io::BufReader::new(fp);
|
||||
|
||||
let mut count = 0;
|
||||
for (i, line) in reader.lines().enumerate() {
|
||||
let line = line.ok()?;
|
||||
if !line.starts_with("cpu") {
|
||||
break;
|
||||
}
|
||||
count = i;
|
||||
let mut fields = line.split_whitespace();
|
||||
fields.next()?;
|
||||
let user = fields.next()?.parse::<u64>().ok()?;
|
||||
|
@ -268,7 +270,7 @@ pub fn cpu_info() -> Option<Vec<CpuInfo>> {
|
|||
let fp = std::fs::File::open("/proc/cpuinfo").ok()?;
|
||||
let reader = std::io::BufReader::new(fp);
|
||||
|
||||
let mut i = 0;
|
||||
let mut j = 0;
|
||||
for line in reader.lines() {
|
||||
let line = line.ok()?;
|
||||
if !line.starts_with("model name") {
|
||||
|
@ -278,11 +280,16 @@ pub fn cpu_info() -> Option<Vec<CpuInfo>> {
|
|||
fields.next()?;
|
||||
let model = fields.next()?.trim();
|
||||
|
||||
cpus[i].model = model.to_string();
|
||||
i += 1;
|
||||
cpus[j].model = model.to_string();
|
||||
j += 1;
|
||||
}
|
||||
|
||||
cpus.truncate(i);
|
||||
while j < count {
|
||||
cpus[j].model = "unknown".to_string();
|
||||
j += 1;
|
||||
}
|
||||
|
||||
cpus.truncate(count);
|
||||
Some(cpus)
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue