Implement "xl tmem-freeable" to match "xm tmem-freeable".
authorStefano Stabellini <sstabellini@xensource.com>
Mon, 19 Jul 2010 11:20:41 +0000 (12:20 +0100)
committerStefano Stabellini <sstabellini@xensource.com>
Mon, 19 Jul 2010 11:20:41 +0000 (12:20 +0100)
Signed-off-by: Dan Magenheimer <dan.magenheimer@oracle.com>
tools/libxl/libxl.c
tools/libxl/libxl.h
tools/libxl/xl.h
tools/libxl/xl_cmdimpl.c
tools/libxl/xl_cmdtable.c

index 8d05d6faf7e2f35c066bb0a8c2f58092028b60c4..34d1fc00ca57d608627b9ff0cfec10d19934a03d 100644 (file)
@@ -3232,6 +3232,20 @@ int libxl_tmem_shared_auth(struct libxl_ctx *ctx, uint32_t domid,
     return rc;
 }
 
+int libxl_tmem_freeable(struct libxl_ctx *ctx)
+{
+    int rc;
+
+    rc = xc_tmem_control(ctx->xch, -1, TMEMC_QUERY_FREEABLE_MB, -1, 0, 0, 0, 0);
+    if (rc < 0) {
+        XL_LOG_ERRNOVAL(ctx, XL_LOG_ERROR, rc,
+            "Can not get tmem freeable memory");
+        return -1;
+    }
+
+    return rc;
+}
+
 int libxl_file_reference_map(struct libxl_ctx *ctx, libxl_file_reference *f)
 {
        struct stat st_buf;
index 924638328393871fd9d45ddf3213c48e205e1309..9766aff3e8c29fff8312bf7f537d79071cf303c4 100644 (file)
@@ -602,6 +602,7 @@ int libxl_tmem_set(struct libxl_ctx *ctx, uint32_t domid, char* name,
                    uint32_t set);
 int libxl_tmem_shared_auth(struct libxl_ctx *ctx, uint32_t domid, char* uuid,
                            int auth);
+int libxl_tmem_freeable(struct libxl_ctx *ctx);
 
 typedef struct {
     char *backend;
index df5ce0308756e251f93814f9eda92a8f5160bcdd..18db408714dae10d7a9fc9e96d4ec1ace35eab96 100644 (file)
@@ -72,6 +72,7 @@ int main_tmem_destroy(int argc, char **argv);
 int main_tmem_thaw(int argc, char **argv);
 int main_tmem_set(int argc, char **argv);
 int main_tmem_shared_auth(int argc, char **argv);
+int main_tmem_freeable(int argc, char **argv);
 int main_network2attach(int argc, char **argv);
 int main_network2list(int argc, char **argv);
 int main_network2detach(int argc, char **argv);
index e6c2e4bb5d3dbae60bda63f2fd8b58a8a9b48e8d..b5b46cbf26a78e47ad103141a0c14188c38d3732 100644 (file)
@@ -4586,3 +4586,26 @@ int main_tmem_shared_auth(int argc, char **argv)
     exit(0);
 }
 
+int main_tmem_freeable(int argc, char **argv)
+{
+    int opt;
+    int mb;
+
+    while ((opt = getopt(argc, argv, "h")) != -1) {
+        switch (opt) {
+        case 'h':
+            help("tmem-freeable");
+            exit(0);
+        default:
+            fprintf(stderr, "option `%c' not supported.\n", opt);
+            break;
+        }
+    }
+
+    mb = libxl_tmem_freeable(&ctx);
+    if (mb == -1)
+        exit(-1);
+
+    printf("%d\n", mb);
+    exit(0);
+}
index 1ec971b54a0c26b59eccd895c93e2bf95b48e78f..d7330fec05961daedecb1bb6b50800210c058780 100644 (file)
@@ -295,6 +295,11 @@ struct cmd_spec cmd_table[] = {
       "                                 (abcdef01-2345-6789-1234-567890abcdef)\n"
       "  -A AUTH                        0=auth,1=deauth",
     },
+    { "tmem-freeable",
+      &main_tmem_freeable,
+      "Get information about how much freeable memory (MB) is in-use by tmem",
+      "",
+    },
     { "network2-attach",
       &main_network2attach,
       "Create a new version 2 virtual network device",