libxl: add API wrapper for libxl_get_free_memory

Upcoming changes will use different LIBXL_API_VERSION variants.

Prepare libxl_get_free_memory, which changed storage size of parameter
"memkb" in Xen 4.8.

No functional change intended.

Signed-off-by: Olaf Hering <olaf@aepfle.de>
Reviewed-by: Jim Fehlig <jfehlig@suse.com>
This commit is contained in:
Olaf Hering 2021-03-25 17:26:08 +01:00 committed by Jim Fehlig
parent 0acd258e2e
commit e8fd24d810
4 changed files with 30 additions and 5 deletions

View File

@ -138,3 +138,22 @@ libxlDomainNeedMemoryWrapper(libxl_ctx *ctx,
return ret;
}
static inline int
libxlGetFreeMemoryWrapper(libxl_ctx *ctx, uint64_t *memkb)
{
int ret;
#if LIBXL_API_VERSION < 0x040800
{
uint32_t val32 = 0;
ret = libxl_get_free_memory(ctx, &val32);
*memkb = val32;
}
#else
ret = libxl_get_free_memory(ctx, memkb);
#endif
return ret;
}

View File

@ -36,6 +36,7 @@
#include "viruuid.h"
#include "vircommand.h"
#include "virsocketaddr.h"
#include "libxl_api_wrapper.h"
#include "libxl_domain.h"
#include "libxl_conf.h"
#include "libxl_utils.h"
@ -1778,7 +1779,7 @@ libxlDriverConfigNew(void)
int
libxlDriverConfigInit(libxlDriverConfigPtr cfg)
{
unsigned int free_mem;
uint64_t free_mem;
if (g_mkdir_with_parents(cfg->logDir, 0777) < 0) {
virReportError(VIR_ERR_INTERNAL_ERROR,
@ -1810,7 +1811,7 @@ libxlDriverConfigInit(libxlDriverConfigPtr cfg)
/* This will fill xenstore info about free and dom0 memory if missing,
* should be called before starting first domain */
if (libxl_get_free_memory(cfg->ctx, &free_mem)) {
if (libxlGetFreeMemoryWrapper(cfg->ctx, &free_mem)) {
VIR_ERROR(_("Unable to configure libxl's memory management parameters"));
return -1;
}

View File

@ -1009,7 +1009,7 @@ static int
libxlDomainFreeMem(libxl_ctx *ctx, libxl_domain_config *d_config)
{
uint64_t needed_mem;
uint32_t free_mem;
uint64_t free_mem;
int32_t target_mem;
int tries = 3;
int wait_secs = 10;
@ -1018,7 +1018,7 @@ libxlDomainFreeMem(libxl_ctx *ctx, libxl_domain_config *d_config)
goto error;
do {
if (libxl_get_free_memory(ctx, &free_mem) < 0)
if (libxlGetFreeMemoryWrapper(ctx, &free_mem) < 0)
goto error;
if (free_mem >= needed_mem)

View File

@ -67,7 +67,12 @@ VIR_MOCK_IMPL_RET_ARGS(libxl_get_version_info,
VIR_MOCK_STUB_RET_ARGS(libxl_get_free_memory,
int, 0,
libxl_ctx *, ctx,
uint32_t *, memkb);
# if LIBXL_API_VERSION < 0x040800
uint32_t *,
# else
uint64_t *,
# endif
memkb);
VIR_MOCK_STUB_RET_ARGS(xc_interface_close,
int, 0,