|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] xend deprecation
On Wed, 2013-09-04 at 10:04 -0400, Konrad Rzeszutek Wilk wrote:
>
> - No console in xl list -l, so can't get tty console port.
Together with the previous patch this can be resoled with the following,
I think. I'm not sure this is the best way to do it though, although
dominfo is mostly "runtime" info and this fits....
8<----------------------------
From 4cffdf9517c668a176f37fa58236f4eb2fd4bbb0 Mon Sep 17 00:00:00 2001
From: Ian Campbell <ian.campbell@xxxxxxxxxx>
Date: Thu, 12 Sep 2013 14:41:06 +0100
Subject: [PATCH] libxl: expose the POV console tty in the dominfo.
Signed-off-by: Ian Campbell <ian.campbell@xxxxxxxxxx>
---
tools/libxl/libxl.c | 38 ++++++++++++++++++++++++++++----------
tools/libxl/libxl_types.idl | 2 ++
2 files changed, 30 insertions(+), 10 deletions(-)
diff --git a/tools/libxl/libxl.c b/tools/libxl/libxl.c
index 1bce4bb..8dea15f 100644
--- a/tools/libxl/libxl.c
+++ b/tools/libxl/libxl.c
@@ -510,9 +510,12 @@ int libxl_domain_preserve(libxl_ctx *ctx, uint32_t domid,
return 0;
}
-static void xcinfo2xlinfo(const xc_domaininfo_t *xcinfo,
+static void xcinfo2xlinfo(libxl__gc *gc,
+ const xc_domaininfo_t *xcinfo,
libxl_dominfo *xlinfo)
{
+ libxl_dominfo_init(xlinfo);
+
memcpy(&(xlinfo->uuid), xcinfo->handle, sizeof(xen_domain_handle_t));
xlinfo->domid = xcinfo->domain;
xlinfo->ssidref = xcinfo->ssidref;
@@ -539,10 +542,17 @@ static void xcinfo2xlinfo(const xc_domaininfo_t *xcinfo,
xlinfo->cpupool = xcinfo->cpupool;
xlinfo->domain_type = (xcinfo->flags & XEN_DOMINF_hvm_guest) ?
LIBXL_DOMAIN_TYPE_HVM : LIBXL_DOMAIN_TYPE_PV;
+
+ if (xcinfo->domaindomid && libxl_console_get_tty(CTX, xcinfo->domain, 0,
+ LIBXL_CONSOLE_TYPE_PV,
+ &xlinfo->console_tty) <
0)
+ LOG(WARN, "unable to get dom%d pv console tty\n", xcinfo->domain);
+
}
libxl_dominfo * libxl_list_domain(libxl_ctx *ctx, int *nb_domain_out)
{
+ GC_INIT(ctx);
libxl_dominfo *ptr;
int i, ret;
xc_domaininfo_t info[1024];
@@ -551,38 +561,46 @@ libxl_dominfo * libxl_list_domain(libxl_ctx *ctx, int
*nb_domain_out)
ptr = calloc(size, sizeof(libxl_dominfo));
if (!ptr) {
LIBXL__LOG_ERRNO(ctx, LIBXL__LOG_ERROR, "allocating domain info");
- return NULL;
+ goto err;
}
ret = xc_domain_getinfolist(ctx->xch, 0, 1024, info);
if (ret<0) {
LIBXL__LOG_ERRNO(ctx, LIBXL__LOG_ERROR, "geting domain info list");
free(ptr);
- return NULL;
+ ptr = NULL;
+ goto err;
}
for (i = 0; i < ret; i++) {
- xcinfo2xlinfo(&info[i], &ptr[i]);
+ xcinfo2xlinfo(gc, &info[i], &ptr[i]);
}
*nb_domain_out = ret;
+err:
+ GC_FREE;
return ptr;
}
int libxl_domain_info(libxl_ctx *ctx, libxl_dominfo *info_r,
- uint32_t domid) {
+ uint32_t domid)
+{
+ GC_INIT(ctx);
xc_domaininfo_t xcinfo;
- int ret;
+ int ret, rc = ERROR_INVAL;
ret = xc_domain_getinfolist(ctx->xch, domid, 1, &xcinfo);
if (ret<0) {
LIBXL__LOG_ERRNO(ctx, LIBXL__LOG_ERROR, "geting domain info list");
return ERROR_FAIL;
}
- if (ret==0 || xcinfo.domain != domid) return ERROR_INVAL;
+ if (ret==0 || xcinfo.domain != domid) goto err;;
if (info_r)
- xcinfo2xlinfo(&xcinfo, info_r);
- return 0;
+ xcinfo2xlinfo(gc, &xcinfo, info_r);
+ rc = 0;
+err:
+ GC_FREE;
+ return rc;
}
static int cpupool_info(libxl__gc *gc,
@@ -3764,7 +3782,7 @@ retry_transaction:
abort_transaction = 1;
goto out;
}
- xcinfo2xlinfo(&info, &ptr);
+ xcinfo2xlinfo(gc, &info, &ptr);
uuid = libxl__uuid2string(gc, ptr.uuid);
libxl__xs_write(gc, t, libxl__sprintf(gc, "/vm/%s/memory", uuid),
"%"PRIu32, new_target_memkb / 1024);
diff --git a/tools/libxl/libxl_types.idl b/tools/libxl/libxl_types.idl
index 10f95f4..6de305b 100644
--- a/tools/libxl/libxl_types.idl
+++ b/tools/libxl/libxl_types.idl
@@ -200,6 +200,8 @@ libxl_dominfo = Struct("dominfo",[
("shutdown", bool),
("dying", bool),
+ ("console_tty", string),
+
# Valid iff (shutdown||dying).
#
# Otherwise set to a value guaranteed not to clash with any valid
--
1.7.10.4
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |