diff options
author | Ian Campbell <ian.campbell@citrix.com> | 2012-10-18 09:35:09 +0100 |
---|---|---|
committer | Ian Campbell <ian.campbell@citrix.com> | 2012-10-18 09:35:09 +0100 |
commit | b3b123b5a943cd2e289c6cb429836f6b16648771 (patch) | |
tree | 292d5282b3a330887a69287562cfe0824c806e23 | |
parent | 191e485a1929a02706ec3301f3185b2b89c3253f (diff) | |
download | xen-b3b123b5a943cd2e289c6cb429836f6b16648771.tar.gz xen-b3b123b5a943cd2e289c6cb429836f6b16648771.tar.bz2 xen-b3b123b5a943cd2e289c6cb429836f6b16648771.zip |
libxl: propagate user supplied values into event for_user field.
This was ommited in the majority of cases. Add as a parameter to
libxl__event_new and the NEW_EVENT wrapper to help prevent it being
forgotten in the future.
Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
Acked-by: Ian Jackson <ian.jackson@eu.citrix.com>
Committed-by: Ian Campbell <ian.campbell@citrix.com>
-rw-r--r-- | tools/libxl/libxl.c | 9 | ||||
-rw-r--r-- | tools/libxl/libxl_create.c | 3 | ||||
-rw-r--r-- | tools/libxl/libxl_event.c | 8 | ||||
-rw-r--r-- | tools/libxl/libxl_internal.h | 7 |
4 files changed, 15 insertions, 12 deletions
diff --git a/tools/libxl/libxl.c b/tools/libxl/libxl.c index 3366ccfc66..665385b318 100644 --- a/tools/libxl/libxl.c +++ b/tools/libxl/libxl.c @@ -955,7 +955,7 @@ static void domain_death_occurred(libxl__egc *egc, libxl_evgen_domain_death *evg_next = LIBXL_TAILQ_NEXT(evg, entry); *evg_upd = evg_next; - libxl_event *ev = NEW_EVENT(egc, DOMAIN_DEATH, evg->domid); + libxl_event *ev = NEW_EVENT(egc, DOMAIN_DEATH, evg->domid, evg->user); libxl__event_occurred(egc, ev); @@ -1041,8 +1041,9 @@ static void domain_death_xswatch_callback(libxl__egc *egc, libxl__ev_xswatch *w, if (!evg->shutdown_reported && (got->flags & XEN_DOMINF_shutdown)) { - libxl_event *ev = NEW_EVENT(egc, DOMAIN_SHUTDOWN, got->domain); - + libxl_event *ev = NEW_EVENT(egc, DOMAIN_SHUTDOWN, + got->domain, evg->user); + LIBXL__LOG(CTX, LIBXL__LOG_DEBUG, " shutdown reporting"); ev->u.domain_shutdown.shutdown_reason = @@ -1141,7 +1142,7 @@ static void disk_eject_xswatch_callback(libxl__egc *egc, libxl__ev_xswatch *w, return; } - libxl_event *ev = NEW_EVENT(egc, DISK_EJECT, evg->domid); + libxl_event *ev = NEW_EVENT(egc, DISK_EJECT, evg->domid, evg->user); libxl_device_disk *disk = &ev->u.disk_eject.disk; backend = libxl__xs_read(gc, XBT_NULL, diff --git a/tools/libxl/libxl_create.c b/tools/libxl/libxl_create.c index eedf38fbcc..e81747b2bc 100644 --- a/tools/libxl/libxl_create.c +++ b/tools/libxl/libxl_create.c @@ -705,7 +705,8 @@ static void domcreate_console_available(libxl__egc *egc, libxl__domain_create_state *dcs) { libxl__ao_progress_report(egc, dcs->ao, &dcs->aop_console_how, NEW_EVENT(egc, DOMAIN_CREATE_CONSOLE_AVAILABLE, - dcs->guest_domid)); + dcs->guest_domid, + dcs->aop_console_how.for_event)); } static void domcreate_bootloader_done(libxl__egc *egc, diff --git a/tools/libxl/libxl_event.c b/tools/libxl/libxl_event.c index aea58bbb6e..e9e2fdc277 100644 --- a/tools/libxl/libxl_event.c +++ b/tools/libxl/libxl_event.c @@ -1157,7 +1157,8 @@ void libxl_event_free(libxl_ctx *ctx, libxl_event *event) } libxl_event *libxl__event_new(libxl__egc *egc, - libxl_event_type type, uint32_t domid) + libxl_event_type type, uint32_t domid, + libxl_ev_user for_user) { EGC_GC; libxl_event *ev; @@ -1168,6 +1169,7 @@ libxl_event *libxl__event_new(libxl__egc *egc, libxl_event_init_type(ev, type); ev->domid = domid; + ev->for_user = for_user; return ev; } @@ -1528,9 +1530,8 @@ void libxl__ao_complete_check_progress_reports(libxl__egc *egc, libxl__ao *ao) LIBXL_TAILQ_INSERT_TAIL(&egc->aos_for_callback, ao, entry_for_callback); } else { libxl_event *ev; - ev = NEW_EVENT(egc, OPERATION_COMPLETE, ao->domid); + ev = NEW_EVENT(egc, OPERATION_COMPLETE, ao->domid, ao->how.u.for_event); if (ev) { - ev->for_user = ao->how.u.for_event; ev->u.operation_complete.rc = ao->rc; libxl__event_occurred(egc, ev); } @@ -1662,7 +1663,6 @@ void libxl__ao_progress_report(libxl__egc *egc, libxl__ao *ao, const libxl_asyncprogress_how *how, libxl_event *ev) { AO_GC; - ev->for_user = how->for_event; if (how->callback == dummy_asyncprogress_callback_ignore) { LOG(DEBUG,"ao %p: progress report: ignored",ao); libxl_event_free(CTX,ev); diff --git a/tools/libxl/libxl_internal.h b/tools/libxl/libxl_internal.h index 1a221ac544..8130d13388 100644 --- a/tools/libxl/libxl_internal.h +++ b/tools/libxl/libxl_internal.h @@ -783,13 +783,14 @@ _hidden void libxl__event_occurred(libxl__egc*, libxl_event *event); * event should be suitable for passing to libxl_event_free. */ _hidden libxl_event *libxl__event_new(libxl__egc*, libxl_event_type, - uint32_t domid); + uint32_t domid, + libxl_ev_user for_user); /* Convenience function. * Allocates a new libxl_event, fills in domid and type. * Cannot fail. */ -#define NEW_EVENT(egc, type, domid) \ - libxl__event_new((egc), LIBXL_EVENT_TYPE_##type, (domid)) +#define NEW_EVENT(egc, type, domid, user) \ + libxl__event_new((egc), LIBXL_EVENT_TYPE_##type, (domid), (user)) /* Convenience macro. */ /* |