]> xenbits.xensource.com Git - libvirt.git/commitdiff
libxl: add API wrapper for libxl_get_free_memory
authorOlaf Hering <olaf@aepfle.de>
Thu, 25 Mar 2021 16:26:08 +0000 (17:26 +0100)
committerJim Fehlig <jfehlig@suse.com>
Thu, 1 Apr 2021 20:01:06 +0000 (14:01 -0600)
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>
src/libxl/libxl_api_wrapper.h
src/libxl/libxl_conf.c
src/libxl/libxl_domain.c
tests/libxlmock.c

index 193f9719194a7810926db741d679af734cefb49a..a400bbd5a30438da5f2f1b28ce64a8eeeb72e2ed 100644 (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;
+}
index 90528d47658565ba7bbcc34eb4838c8410d54044..d84522cdb424b9cdaca5afddad5347794427c813 100644 (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;
     }
index d6554bc230704d289faec1c18b87ae006458958b..ac613b96b9f449888eb6b269369ad14fecee43cf 100644 (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)
index a36ca135f61320cde63609fb29c34483f8f18497..604dc4bfbe0ac0a4c5d16c5cf01aba4fabb74cb9 100644 (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,