On Thu, Feb 18, 2021 at 14:30:56 +0100, Michal Privoznik wrote: > New virHostMemGetTHPSize() is introduced which allows caller to > obtain THP PMD (Page Middle Directory) size, which is equal to > the minimal size that THP can use, taken from kernel doc > (Documentation/admin-guide/mm/transhuge.rst): > > Some userspace (such as a test program, or an optimized memory allocation > library) may want to know the size (in bytes) of a transparent hugepage:: > > cat /sys/kernel/mm/transparent_hugepage/hpage_pmd_size > > Since this size depends on the host architecture and the kernel > it won't change whilst libvirtd is running. Therefore, we can use > virOnce() and cache the value. Of course, we can be running under > kernel that has THP disabled or has no notion of THP at all. In > that case a negative value is returned to signal error. > > Signed-off-by: Michal Privoznik <mprivozn@xxxxxxxxxx> > --- > src/libvirt_private.syms | 1 + > src/util/virhostmem.c | 63 ++++++++++++++++++++++++++++++++++++++++ > src/util/virhostmem.h | 3 ++ > tests/domaincapsmock.c | 9 ++++++ > 4 files changed, 76 insertions(+) [...] > diff --git a/src/util/virhostmem.c b/src/util/virhostmem.c > index ae42978ed2..ef7b97806f 100644 > --- a/src/util/virhostmem.c > +++ b/src/util/virhostmem.c > @@ -45,11 +45,14 @@ > #include "virstring.h" > #include "virnuma.h" > #include "virlog.h" > +#include "virthread.h" > > #define VIR_FROM_THIS VIR_FROM_NONE > > VIR_LOG_INIT("util.hostmem"); > > +static unsigned long long virHostTHPPMDSize; Please add a comment that it's in kiB. > +static virOnceControl virHostMemGetTHPSizeOnce = VIR_ONCE_CONTROL_INITIALIZER;