$OpenBSD: patch-vendor_num_cpus_src_lib_rs,v 1.2 2020/02/11 12:48:20 semarie Exp $

Use hw.ncpuonline for num_cpus::get():
https://github.com/seanmonstar/num_cpus/commit/b94df797a146b54f0be435ca47ef875b6e0477a9

Index: vendor/num_cpus/src/lib.rs
--- vendor/num_cpus/src/lib.rs.orig
+++ vendor/num_cpus/src/lib.rs
@@ -103,7 +103,7 @@ pub fn get_physical() -> usize {
 }
 
 
-#[cfg(not(any(target_os = "linux", target_os = "windows", target_os="macos")))]
+#[cfg(not(any(target_os = "linux", target_os = "windows", target_os="macos", target_os="openbsd")))]
 #[inline]
 fn get_num_physical_cpus() -> usize {
     // Not implemented, fall back
@@ -295,15 +295,16 @@ fn get_num_cpus() -> usize {
 fn get_num_cpus() -> usize {
     let mut cpus: libc::c_uint = 0;
     let mut cpus_size = std::mem::size_of_val(&cpus);
-    let mut mib = [libc::CTL_HW, libc::HW_NCPU, 0, 0];
+    let mut mib = [libc::CTL_HW, libc::HW_NCPUONLINE, 0, 0];
+    let rc: libc::c_int;
 
     unsafe {
-        libc::sysctl(mib.as_mut_ptr(),
-                     2,
-                     &mut cpus as *mut _ as *mut _,
-                     &mut cpus_size as *mut _ as *mut _,
-                     0 as *mut _,
-                     0);
+        rc = libc::sysctl(mib.as_mut_ptr(),
+                          2,
+                          &mut cpus as *mut _ as *mut _,
+                          &mut cpus_size as *mut _ as *mut _,
+                          0 as *mut _,
+                          0);
     }
     if cpus < 1 {
         cpus = 1;
@@ -311,6 +312,26 @@ fn get_num_cpus() -> usize {
     cpus as usize
 }
 
+#[cfg(target_os = "openbsd")]
+fn get_num_physical_cpus() -> usize {
+    let mut cpus: libc::c_uint = 0;
+    let mut cpus_size = std::mem::size_of_val(&cpus);
+    let mut mib = [libc::CTL_HW, libc::HW_NCPU, 0, 0];
+    let rc: libc::c_int;
+
+    unsafe {
+        rc = libc::sysctl(mib.as_mut_ptr(),
+                          2,
+                          &mut cpus as *mut _ as *mut _,
+                          &mut cpus_size as *mut _ as *mut _,
+                          0 as *mut _,
+                          0);
+    }
+    if rc < 1 {
+        cpus = 1;
+    }
+    cpus as usize
+}
 
 #[cfg(target_os = "macos")]
 fn get_num_physical_cpus() -> usize {
