From: Keir Fraser Date: Fri, 4 Dec 2009 07:11:44 +0000 (+0000) Subject: libxenlight: get state for one domain X-Git-Tag: archive/raspbian/4.8.0-1+rpi1~1^2~12958 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=88cd47fe0f729d3686476fce48f3e39c5a9b7221;p=xen.git libxenlight: get state for one domain Simple function to get the dominfo state of a single domain. Signed-off-by: Andres Lagar-Cavilla --- diff --git a/tools/libxl/libxl.c b/tools/libxl/libxl.c index 7a01dc5df1..39373385fc 100644 --- a/tools/libxl/libxl.c +++ b/tools/libxl/libxl.c @@ -362,6 +362,31 @@ static int libxl_save_device_model(struct libxl_ctx *ctx, uint32_t domid, int fd return 0; } +xc_dominfo_t *libxl_domain_info(struct libxl_ctx *ctx, uint32_t domid) +{ + xc_dominfo_t *info; + int rc; + + info = (xc_dominfo_t *) calloc(1, sizeof(xc_dominfo_t)); + if (!info) { + return NULL; + } + rc = xc_domain_getinfo(ctx->xch, domid, 1, info); + if (rc != 1) { + free(info); + XL_LOG_ERRNO(ctx, XL_LOG_ERROR, "Failed to get info for domain %u", + domid); + return NULL; + } + if (info->domid != domid) { + free(info); + XL_LOG(ctx, XL_LOG_ERROR, "Failed to get info for domain %u" + ", seems to not exist anymore", domid); + return NULL; + } + + return info; +} int libxl_domain_suspend(struct libxl_ctx *ctx, libxl_domain_suspend_info *info, uint32_t domid, int fd) { diff --git a/tools/libxl/libxl.h b/tools/libxl/libxl.h index a07918520f..2ac3669afa 100644 --- a/tools/libxl/libxl.h +++ b/tools/libxl/libxl.h @@ -276,6 +276,7 @@ int libxl_console_attach(struct libxl_ctx *ctx, uint32_t domid, int cons_num); struct libxl_dominfo * libxl_domain_list(struct libxl_ctx *ctx, int *nb_domain); xc_dominfo_t * libxl_domain_infolist(struct libxl_ctx *ctx, int *nb_domain); +xc_dominfo_t * libxl_domain_info(struct libxl_ctx *ctx, uint32_t domid); typedef struct libxl_device_model_starting libxl_device_model_starting; int libxl_create_device_model(struct libxl_ctx *ctx,