1
0
mirror of https://gitlab.com/libvirt/libvirt.git synced 2025-03-07 17:28:15 +00:00

libxl: include a pointer to the driver in libxlDomainObjPrivate

Include a pointer to the libxl driver in libxlDomainObjPrivate
object so it can be used in the domain event handler and
shutdown thread.

Signed-off-by: Jim Fehlig <jfehlig@suse.com>
This commit is contained in:
Jim Fehlig 2014-02-26 15:43:37 -07:00
parent 3182448f4c
commit 7fb36c7b8d
3 changed files with 8 additions and 5 deletions

View File

@ -737,10 +737,11 @@ libxlDomainCleanupJob(libxlDriverPrivatePtr driver,
* Register for domain events emitted by libxl. * Register for domain events emitted by libxl.
*/ */
int int
libxlDomainEventsRegister(virDomainObjPtr vm) libxlDomainEventsRegister(libxlDriverPrivatePtr driver, virDomainObjPtr vm)
{ {
libxlDomainObjPrivatePtr priv = vm->privateData; libxlDomainObjPrivatePtr priv = vm->privateData;
priv->driver = driver;
libxl_event_register_callbacks(priv->ctx, &ev_hooks, vm); libxl_event_register_callbacks(priv->ctx, &ev_hooks, vm);
/* Always enable domain death events */ /* Always enable domain death events */
@ -1018,7 +1019,7 @@ libxlDomainStart(libxlDriverPrivatePtr driver, virDomainObjPtr vm,
* be cleaned up if there are any subsequent failures. * be cleaned up if there are any subsequent failures.
*/ */
vm->def->id = domid; vm->def->id = domid;
if (libxlDomainEventsRegister(vm) < 0) if (libxlDomainEventsRegister(driver, vm) < 0)
goto cleanup_dom; goto cleanup_dom;
if ((dom_xml = virDomainDefFormat(vm->def, 0)) == NULL) if ((dom_xml = virDomainDefFormat(vm->def, 0)) == NULL)

View File

@ -68,6 +68,7 @@ struct _libxlDomainObjPrivate {
/* console */ /* console */
virChrdevsPtr devs; virChrdevsPtr devs;
libxl_evgen_domain_death *deathW; libxl_evgen_domain_death *deathW;
libxlDriverPrivatePtr driver;
struct libxlDomainJobObj job; struct libxlDomainJobObj job;
}; };
@ -117,7 +118,8 @@ libxlDomainCleanupJob(libxlDriverPrivatePtr driver,
virDomainObjPtr vm, virDomainObjPtr vm,
virDomainShutoffReason reason); virDomainShutoffReason reason);
int int
libxlDomainEventsRegister(virDomainObjPtr vm); libxlDomainEventsRegister(libxlDriverPrivatePtr driver,
virDomainObjPtr vm);
int int
libxlDomainAutoCoreDump(libxlDriverPrivatePtr driver, libxlDomainAutoCoreDump(libxlDriverPrivatePtr driver,

View File

@ -152,11 +152,11 @@ struct libxlShutdownThreadInfo
static void static void
libxlDomainShutdownThread(void *opaque) libxlDomainShutdownThread(void *opaque)
{ {
libxlDriverPrivatePtr driver = libxl_driver;
struct libxlShutdownThreadInfo *shutdown_info = opaque; struct libxlShutdownThreadInfo *shutdown_info = opaque;
virDomainObjPtr vm = shutdown_info->vm; virDomainObjPtr vm = shutdown_info->vm;
libxlDomainObjPrivatePtr priv = vm->privateData; libxlDomainObjPrivatePtr priv = vm->privateData;
libxl_event *ev = shutdown_info->event; libxl_event *ev = shutdown_info->event;
libxlDriverPrivatePtr driver = priv->driver;
libxl_ctx *ctx = priv->ctx; libxl_ctx *ctx = priv->ctx;
virObjectEventPtr dom_event = NULL; virObjectEventPtr dom_event = NULL;
libxl_shutdown_reason xl_reason = ev->u.domain_shutdown.shutdown_reason; libxl_shutdown_reason xl_reason = ev->u.domain_shutdown.shutdown_reason;
@ -357,7 +357,7 @@ libxlReconnectDomain(virDomainObjPtr vm,
driver->inhibitCallback(true, driver->inhibitOpaque); driver->inhibitCallback(true, driver->inhibitOpaque);
/* Re-register domain death et. al. events */ /* Re-register domain death et. al. events */
libxlDomainEventsRegister(vm); libxlDomainEventsRegister(driver, vm);
virObjectUnlock(vm); virObjectUnlock(vm);
return 0; return 0;