[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH 1 of 5] libxl: propagate user supplied values into event for_user field
# HG changeset patch # User Ian Campbell <ijc@xxxxxxxxxxxxxx> # Date 1350290590 -3600 # Node ID 65e301c71ca41af8cf0aaea653cd9e8d08bca2f7 # Parent de18f0577d3ff521822dd3760fbfe5e08a771f9d 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@xxxxxxxxxx> --- This should be backported to 4.2. diff -r de18f0577d3f -r 65e301c71ca4 tools/libxl/libxl.c --- a/tools/libxl/libxl.c Fri Oct 12 15:58:22 2012 +0100 +++ b/tools/libxl/libxl.c Mon Oct 15 09:43:10 2012 +0100 @@ -955,7 +955,7 @@ static void domain_death_occurred(libxl_ 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_callbac 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( 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 -r de18f0577d3f -r 65e301c71ca4 tools/libxl/libxl_create.c --- a/tools/libxl/libxl_create.c Fri Oct 12 15:58:22 2012 +0100 +++ b/tools/libxl/libxl_create.c Mon Oct 15 09:43:10 2012 +0100 @@ -705,7 +705,8 @@ static void domcreate_console_available( 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 -r de18f0577d3f -r 65e301c71ca4 tools/libxl/libxl_event.c --- a/tools/libxl/libxl_event.c Fri Oct 12 15:58:22 2012 +0100 +++ b/tools/libxl/libxl_event.c Mon Oct 15 09:43:10 2012 +0100 @@ -1157,7 +1157,8 @@ void libxl_event_free(libxl_ctx *ctx, li } 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 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_r 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__eg 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 -r de18f0577d3f -r 65e301c71ca4 tools/libxl/libxl_internal.h --- a/tools/libxl/libxl_internal.h Fri Oct 12 15:58:22 2012 +0100 +++ b/tools/libxl/libxl_internal.h Mon Oct 15 09:43:10 2012 +0100 @@ -783,13 +783,14 @@ _hidden void libxl__event_occurred(libxl * 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. */ /* _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |