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>
---
src/util/virhostcpu.c | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
diff --git a/src/util/virhostcpu.c b/src/util/virhostcpu.c
index 113aa6881e..7cecb4b2c8 100644
--- a/src/util/virhostcpu.c
+++ b/src/util/virhostcpu.c
@@ -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 */
--
2.52.0