Skip to content

Commit

Permalink
Rollup merge of rust-lang#89462 - devnexen:haiku_thread_aff_build_fix…
Browse files Browse the repository at this point in the history
…, r=nagisa

haiku thread affinity build fix
  • Loading branch information
Manishearth authored Oct 3, 2021
2 parents 90072f9 + 98dde56 commit 2cb53ab
Showing 1 changed file with 10 additions and 6 deletions.
16 changes: 10 additions & 6 deletions library/std/src/sys/unix/thread.rs
Original file line number Diff line number Diff line change
Expand Up @@ -339,14 +339,18 @@ pub fn available_concurrency() -> io::Result<NonZeroUsize> {

Ok(unsafe { NonZeroUsize::new_unchecked(cpus as usize) })
} else if #[cfg(target_os = "haiku")] {
let mut sinfo: libc::system_info = crate::mem::zeroed();
let res = libc::get_system_info(&mut sinfo);
// system_info cpu_count field gets the static data set at boot time with `smp_set_num_cpus`
// `get_system_info` calls then `smp_get_num_cpus`
unsafe {
let mut sinfo: libc::system_info = crate::mem::zeroed();
let res = libc::get_system_info(&mut sinfo);

if res != libc::B_OK {
return Err(io::Error::last_os_error());
}
if res != libc::B_OK {
return Err(io::Error::new_const(io::ErrorKind::NotFound, &"The number of hardware threads is not known for the target platform"));
}

Ok(unsafe { NonZeroUsize::new_unchecked(sinfo.cpu_count as usize) })
Ok(NonZeroUsize::new_unchecked(sinfo.cpu_count as usize))
}
} else {
// FIXME: implement on vxWorks, Redox, l4re
Err(io::Error::new_const(io::ErrorKind::Unsupported, &"Getting the number of hardware threads is not supported on the target platform"))
Expand Down

0 comments on commit 2cb53ab

Please sign in to comment.