]> Savannah Git Hosting - gnulib.git/commitdiff
nproc: port better to OpenBSD
authorPaul Eggert <eggert@cs.ucla.edu>
Sun, 10 Oct 2021 17:43:47 +0000 (10:43 -0700)
committerPaul Eggert <eggert@cs.ucla.edu>
Sun, 10 Oct 2021 17:44:37 +0000 (10:44 -0700)
Problem reported by Omar Polo in:
https://lists.gnu.org/r/emacs-devel/2021-10/msg00692.html
* lib/nproc.c (num_processors_ignoring_omp): Prefer HW_NCPUONLINE
to HW_NCPU, for OpenBSD.  Also, make mib const.

ChangeLog
lib/nproc.c

index 232d2dec3b0106bf46feccdb78830c01f18909bc..da5b570ee5b9092678139dc0748f3b49f1659d81 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2021-10-10  Paul Eggert  <eggert@cs.ucla.edu>
+
+       nproc: port better to OpenBSD
+       Problem reported by Omar Polo in:
+       https://lists.gnu.org/r/emacs-devel/2021-10/msg00692.html
+       * lib/nproc.c (num_processors_ignoring_omp): Prefer HW_NCPUONLINE
+       to HW_NCPU, for OpenBSD.  Also, make mib const.
+
 2021-10-02  Paul Eggert  <eggert@cs.ucla.edu>
 
        timer-time: port better to OpenBSD 6.9
index e3ddb9288dab2f1d999f124aef6c8b31443650e9..a9e369dd3f7e872249412a47396ae812fde7dc24 100644 (file)
@@ -310,12 +310,19 @@ num_processors_ignoring_omp (enum nproc_query query)
   { /* This works on Mac OS X, FreeBSD, NetBSD, OpenBSD.  */
     int nprocs;
     size_t len = sizeof (nprocs);
-    static int mib[2] = { CTL_HW, HW_NCPU };
-
-    if (sysctl (mib, ARRAY_SIZE (mib), &nprocs, &len, NULL, 0) == 0
-        && len == sizeof (nprocs)
-        && 0 < nprocs)
-      return nprocs;
+    static int const mib[][2] = {
+# ifdef HW_NCPUONLINE
+      { CTL_HW, HW_NCPUONLINE },
+# endif
+      { CTL_HW, HW_NCPU }
+    };
+    for (int i = 0; i < ARRAY_SIZE (mib); i++)
+      {
+        if (sysctl (mib[i], ARRAY_SIZE (mib[i]), &nprocs, &len, NULL, 0) == 0
+            && len == sizeof (nprocs)
+            && 0 < nprocs)
+          return nprocs;
+      }
   }
 #endif