]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
util: extend virHostCPUGetInfo() for FreeBSD
authorRoman Bogorodskiy <bogorodskiy@gmail.com>
Sat, 7 Mar 2026 07:35:37 +0000 (07:35 +0000)
committerRoman Bogorodskiy <bogorodskiy@gmail.com>
Mon, 9 Mar 2026 19:02:24 +0000 (20:02 +0100)
Extend virHostCPUGetInfo() to report more data on FreeBSD, such as:

 - NUMA domain count
 - CPU core count
 - CPU threads per core count

Signed-off-by: Roman Bogorodskiy <bogorodskiy@gmail.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
src/util/virhostcpu.c

index 113aa6881ed4f84f36c5f70a46bbbff71151f5c4..7cecb4b2c8adcc9817de2ec5639efdfe4e7b5f1d 100644 (file)
@@ -1014,6 +1014,22 @@ virHostCPUGetInfo(virArch hostarch G_GNUC_UNUSED,
     *mhz = cpu_freq / 1000000;
 # endif
 
+# ifdef __FreeBSD__
+#  define FILL_DATA_SYSCTL(var, sysctl, error_msg) \
+    do { \
+        size_t _len = sizeof(*var); \
+        if (sysctlbyname(sysctl, var, &_len, NULL, 0) < 0) { \
+            virReportSystemError(errno, "%s", error_msg); \
+            return -1; \
+        } \
+    } while (0)
+
+    FILL_DATA_SYSCTL(nodes, "vm.ndomains", _("cannot obtain NUMA domain count"));
+    FILL_DATA_SYSCTL(cores, "kern.smp.cores", _("cannot obtain CPU core count"));
+    FILL_DATA_SYSCTL(threads, "kern.smp.threads_per_core",
+                      _("cannot obtain CPU threads per core"));
+# endif /* __FreeBSD__ */
+
     return 0;
 #else
     /* XXX Solaris will need an impl later if they port QEMU driver */