From 5a3d05007ef5725df50953a3c41d0d8935b0532a Mon Sep 17 00:00:00 2001 From: Daniel Veillard Date: Thu, 8 Dec 2005 10:12:18 +0000 Subject: [PATCH] * src/libvir.c src/xen_internal.c: fixed the new Xen hypervisor call Daniel --- ChangeLog | 4 ++++ src/libvir.c | 2 +- src/xen_internal.c | 9 ++++++--- 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index 072344ddfc..2b5dac79e5 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +Thu Dec 8 11:12:36 CET 2005 Daniel Veillard + + * src/libvir.c src/xen_internal.c: fixed the new Xen hypervisor call + Wed Dec 7 19:09:48 CET 2005 Daniel Veillard * configure.in src/Makefile.am src/libvir.c src/xen_internal.c diff --git a/src/libvir.c b/src/libvir.c index 0fef72975b..52c82fbcd7 100644 --- a/src/libvir.c +++ b/src/libvir.c @@ -636,7 +636,7 @@ virDomainGetInfo(virDomainPtr domain, virDomainInfoPtr info) { dominfo.domain = domain->handle; ret = xenHypervisorGetDomainInfo(domain->conn->handle, domain->handle, &dominfo); - if (ret <= 0) + if (ret < 0) return(-1); switch (dominfo.flags & 0xFF) { case DOMFLAGS_DYING: diff --git a/src/xen_internal.c b/src/xen_internal.c index dc79a51832..0eb49b6dda 100644 --- a/src/xen_internal.c +++ b/src/xen_internal.c @@ -84,6 +84,7 @@ int xenHypervisorClose(int handle) { static int xenHypervisorDoOp(int handle, dom0_op_t *op) { int ret; + unsigned int cmd; hypercall_t hc; op->interface_version = DOM0_INTERFACE_VERSION; @@ -93,8 +94,8 @@ xenHypervisorDoOp(int handle, dom0_op_t *op) { if (mlock(op, sizeof(dom0_op_t)) < 0) return(-1); - ret = ioctl(handle, _IOC(_IOC_NONE, 'P', 0, sizeof(hypercall_t)), - (unsigned long) &hc); + cmd = _IOC(_IOC_NONE, 'P', 0, sizeof(hc)); + ret = ioctl(handle, cmd, (unsigned long) &hc); if (munlock(op, sizeof(dom0_op_t)) < 0) ret = -1; @@ -132,13 +133,15 @@ xenHypervisorGetDomainInfo(int handle, int domain, dom0_getdomaininfo_t *info) { op.u.getdomaininfolist.first_domain = (domid_t) domain; op.u.getdomaininfolist.max_domains = 1; op.u.getdomaininfolist.buffer = info; + op.u.getdomaininfolist.num_domains = 1; + info->domain = domain; ret = xenHypervisorDoOp(handle, &op); if (munlock(info, sizeof(dom0_getdomaininfo_t)) < 0) ret = -1; - if (ret <= 0) + if (ret < 0) return(-1); return(0); } -- 2.47.2