aboutsummaryrefslogtreecommitdiff
path: root/hw/xen_domainbuild.c
diff options
context:
space:
mode:
Diffstat (limited to 'hw/xen_domainbuild.c')
-rw-r--r--hw/xen_domainbuild.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/hw/xen_domainbuild.c b/hw/xen_domainbuild.c
index 2f59856f73..b735ca453d 100644
--- a/hw/xen_domainbuild.c
+++ b/hw/xen_domainbuild.c
@@ -211,7 +211,7 @@ static int xen_domain_watcher(void)
}
/* normal cleanup */
-static void xen_domain_cleanup(void)
+static void xen_domain_cleanup(Notifier *notifier)
{
char *dom;
@@ -232,6 +232,7 @@ int xen_domain_build_pv(const char *kernel, const char *ramdisk,
unsigned int xenstore_port = 0, console_port = 0;
unsigned long xenstore_mfn = 0, console_mfn = 0;
int rc;
+ static Notifier exit_notifier = { .notify = xen_domain_cleanup };
memcpy(uuid, qemu_uuid, sizeof(uuid));
rc = xc_domain_create(xen_xc, ssidref, uuid, flags, &xen_domid);
@@ -240,7 +241,7 @@ int xen_domain_build_pv(const char *kernel, const char *ramdisk,
goto err;
}
qemu_log("xen: created domain %d\n", xen_domid);
- atexit(xen_domain_cleanup);
+ exit_notifier_add(&exit_notifier);
if (xen_domain_watcher() == -1) {
goto err;
}