mirror of https://github.com/xemu-project/xemu.git
xen: destroy_hvm_domain: Try xendevicemodel_shutdown
xc_interface_open etc. is not going to work if we have dropped privilege, but xendevicemodel_shutdown will if everything is new enough. xendevicemodel_shutdown is only availabe in Xen 4.10 and later, so provide a stub for earlier versions. Signed-off-by: Ian Jackson <Ian.Jackson@eu.citrix.com> Reviewed-by: Anthony PERARD <anthony.perard@citrix.com>
This commit is contained in:
parent
85f3c64da3
commit
6b47c2aa78
|
@ -1386,9 +1386,21 @@ void destroy_hvm_domain(bool reboot)
|
|||
{
|
||||
xc_interface *xc_handle;
|
||||
int sts;
|
||||
int rc;
|
||||
|
||||
unsigned int reason = reboot ? SHUTDOWN_reboot : SHUTDOWN_poweroff;
|
||||
|
||||
if (xen_dmod) {
|
||||
rc = xendevicemodel_shutdown(xen_dmod, xen_domid, reason);
|
||||
if (!rc) {
|
||||
return;
|
||||
}
|
||||
if (errno != ENOTTY /* old Xen */) {
|
||||
perror("xendevicemodel_shutdown failed");
|
||||
}
|
||||
/* well, try the old thing then */
|
||||
}
|
||||
|
||||
xc_handle = xc_interface_open(0, 0, 0);
|
||||
if (xc_handle == NULL) {
|
||||
fprintf(stderr, "Cannot acquire xenctrl handle\n");
|
||||
|
|
|
@ -108,6 +108,13 @@ static inline int xentoolcore_restrict_all(domid_t domid)
|
|||
return -1;
|
||||
}
|
||||
|
||||
static inline int xendevicemodel_shutdown(xendevicemodel_handle *dmod,
|
||||
domid_t domid, unsigned int reason)
|
||||
{
|
||||
errno = ENOTTY;
|
||||
return -1;
|
||||
}
|
||||
|
||||
#else /* CONFIG_XEN_CTRL_INTERFACE_VERSION >= 41000 */
|
||||
|
||||
#include <xentoolcore.h>
|
||||
|
|
Loading…
Reference in New Issue