aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKeir Fraser <keir.fraser@citrix.com>2010-01-08 11:47:28 +0000
committerKeir Fraser <keir.fraser@citrix.com>2010-01-08 11:47:28 +0000
commitf3ae9271060cc985170e3d88724de96c17dbcc18 (patch)
tree01ff33426ac6be7ac0715ffa92a8664f3f337dfe
parent1765cc225537f6396188d008f4b59e942408ac41 (diff)
downloadxen-f3ae9271060cc985170e3d88724de96c17dbcc18.tar.gz
xen-f3ae9271060cc985170e3d88724de96c17dbcc18.tar.bz2
xen-f3ae9271060cc985170e3d88724de96c17dbcc18.zip
libxenlight: simplify the logic of domain_list to just return 1024 domains maximum
Signed-off-by: Vincent Hanquez <vincent.hanquez@eu.citrix.com>
-rw-r--r--tools/libxl/libxl.c24
1 files changed, 5 insertions, 19 deletions
diff --git a/tools/libxl/libxl.c b/tools/libxl/libxl.c
index da09106b1c..c5f1fd8394 100644
--- a/tools/libxl/libxl.c
+++ b/tools/libxl/libxl.c
@@ -273,32 +273,20 @@ struct libxl_dominfo * libxl_domain_list(struct libxl_ctx *ctx, int *nb_domain)
{
struct libxl_dominfo *ptr;
int index, i, ret, first_domain;
- xc_domaininfo_t info[16];
- int size = 16;
+ xc_domaininfo_t info[1024];
+ int size = 1024;
first_domain = 1;
index = 0;
ptr = calloc(size, sizeof(struct libxl_dominfo));
if (!ptr)
return NULL;
-redo:
- ret = xc_domain_getinfolist(ctx->xch, first_domain, 16, info);
- for (i = 0; i < ret; i++) {
- if (index == size) {
- struct libxl_dominfo *ptr2;
- ptr2 = calloc(size * 2, sizeof(struct libxl_dominfo));
- if (!ptr2) {
- free(ptr);
- return NULL;
- }
- memcpy(ptr2, ptr, sizeof(struct libxl_dominfo) * size);
- free(ptr);
- ptr = ptr2;
- size *= 2;
- }
+ ret = xc_domain_getinfolist(ctx->xch, first_domain, 1024, info);
+ for (i = 0; i < ret; i++) {
memcpy(&(ptr[index].uuid), info[i].handle, sizeof(xen_domain_handle_t));
ptr[index].domid = info[i].domain;
+ printf("domain %d [ret %d]\n", ptr[index].domid, ret);
if (info[i].flags & XEN_DOMINF_dying)
ptr[index].dying = 1;
@@ -310,8 +298,6 @@ redo:
first_domain = info[i].domain + 1;
index++;
}
- if (ret == 16)
- goto redo;
*nb_domain = index;
return ptr;
}