diff options
author | Keir Fraser <keir.fraser@citrix.com> | 2010-01-08 11:47:28 +0000 |
---|---|---|
committer | Keir Fraser <keir.fraser@citrix.com> | 2010-01-08 11:47:28 +0000 |
commit | f3ae9271060cc985170e3d88724de96c17dbcc18 (patch) | |
tree | 01ff33426ac6be7ac0715ffa92a8664f3f337dfe | |
parent | 1765cc225537f6396188d008f4b59e942408ac41 (diff) | |
download | xen-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.c | 24 |
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; } |