diff options
author | Keir Fraser <keir.fraser@citrix.com> | 2010-01-17 18:05:03 +0000 |
---|---|---|
committer | Keir Fraser <keir.fraser@citrix.com> | 2010-01-17 18:05:03 +0000 |
commit | 24cdde59ca1ca02ae0fe209a447d6810e2b47849 (patch) | |
tree | 54e468f50e1cfdfd67c14850fb2c2d4084e3d6c2 /tools/libxl/libxl_utils.c | |
parent | 590ab745d2dcdbd3d51305c7b74e0dae646d6a2e (diff) | |
download | xen-24cdde59ca1ca02ae0fe209a447d6810e2b47849.tar.gz xen-24cdde59ca1ca02ae0fe209a447d6810e2b47849.tar.bz2 xen-24cdde59ca1ca02ae0fe209a447d6810e2b47849.zip |
libxenlight: separate logically list_vm and list_domain
previously list_domain was something between listing VM and domains.
provide 2 separates API calls to list domains and list vms. the list
vms API filters utility domains like stubdomains, and domain 0
change is_stubdom to properly check the integer and also return a
boolean value.
Signed-off-by: Vincent Hanquez <vincent.hanquez@eu.citrix.com>
Diffstat (limited to 'tools/libxl/libxl_utils.c')
-rw-r--r-- | tools/libxl/libxl_utils.c | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/tools/libxl/libxl_utils.c b/tools/libxl/libxl_utils.c index eca4347924..1ba9431459 100644 --- a/tools/libxl/libxl_utils.c +++ b/tools/libxl/libxl_utils.c @@ -60,7 +60,7 @@ int libxl_name_to_domid(struct libxl_ctx *ctx, char *name, uint32_t *domid) char *domname; struct libxl_dominfo *dominfo; - dominfo = libxl_domain_list(ctx, &nb_domains); + dominfo = libxl_list_domain(ctx, &nb_domains); if (!dominfo) return ERROR_NOMEM; @@ -85,13 +85,20 @@ int libxl_get_stubdom_id(struct libxl_ctx *ctx, int guest_domid) return 0; } -int libxl_is_stubdom(struct libxl_ctx *ctx, int domid) +int libxl_is_stubdom(struct libxl_ctx *ctx, uint32_t domid, uint32_t *target_domid) { - char *target = libxl_xs_read(ctx, XBT_NULL, libxl_sprintf(ctx, "%s/target", libxl_xs_get_dompath(ctx, domid))); - if (target) - return atoi(target); - else + char *target, *endptr; + uint32_t value; + + target = libxl_xs_read(ctx, XBT_NULL, libxl_sprintf(ctx, "%s/target", libxl_xs_get_dompath(ctx, domid))); + if (!target) + return 0; + value = strtol(target, &endptr, 10); + if (*endptr != '\0') return 0; + if (target_domid) + *target_domid = value; + return 1; } int libxl_create_logfile(struct libxl_ctx *ctx, char *name, char **full_name) |