[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH] libxl: unconst the event argument to the event_occurs hook.
Ian Campbell wrote: > The event is supposed to become owned, and therefore freed, by the application > and the const prevents this. > > Unfortunately there is no way to remove the const without breaking existing > callers. The best we can do is use the LIBXL_API_VERSION provisions to remove > the const for callers who wish only to support the 4.3 API and newer. > > Callers who wish to support 4.2 will need to live with casting away the const. > > Signed-off-by: Ian Campbell <ian.campbell@xxxxxxxxxx> > Cc: Ian.Jackson@xxxxxxxxxx > Cc: George.Dunlap@xxxxxxxxx > Cc: Jim Fehlig <jfehlig@xxxxxxxx> > Cc: Rob Hoes <Rob.Hoes@xxxxxxxxxx> > --- > tools/libxl/libxl.h | 14 ++++++++++++-- > tools/libxl/libxl_event.h | 6 +++++- > 2 files changed, 17 insertions(+), 3 deletions(-) > > diff --git a/tools/libxl/libxl.h b/tools/libxl/libxl.h > index 25efa76..ef96bce 100644 > --- a/tools/libxl/libxl.h > +++ b/tools/libxl/libxl.h > @@ -273,9 +273,9 @@ > #include <libxl_uuid.h> > #include <_libxl_list.h> > > -/* API compatibility. Only 0x040200 is supported at this time. */ > +/* API compatibility. */ > #ifdef LIBXL_API_VERSION > -#if LIBXL_API_VERSION != 0x040200 > +#if LIBXL_API_VERSION != 0x040200 && LIBXL_API_VERSION != 0x040300 > #error Unknown LIBXL_API_VERSION > #endif > #endif > Should this hunk be in a separate patch? It seems to be introducing a new API version :). > @@ -308,6 +308,16 @@ > */ > #define LIBXL_HAVE_DEVICE_BACKEND_DOMNAME 1 > > +/* > + * LIBXL_HAVE_NONCONST_EVENT_OCCURS_EVENT_ARG > + * > + * This argument was erroneously "const" in the 4.2 release despite > + * the requirement for the callback to free the event. > + */ > +#if LIBXL_API_VERSION != 0x040200 > +#define LIBXL_HAVE_NONCONST_EVENT_OCCURS_EVENT_ARG 1 > +#endif > + > /* Functions annotated with LIBXL_EXTERNAL_CALLERS_ONLY may not be > * called from within libxl itself. Callers outside libxl, who > * do not #include libxl_internal.h, are fine. */ > diff --git a/tools/libxl/libxl_event.h b/tools/libxl/libxl_event.h > index 51f2721..27a65dc 100644 > --- a/tools/libxl/libxl_event.h > +++ b/tools/libxl/libxl_event.h > @@ -64,7 +64,11 @@ void libxl_event_free(libxl_ctx *ctx, libxl_event *event); > > typedef struct libxl_event_hooks { > uint64_t event_occurs_mask; > - void (*event_occurs)(void *user, const libxl_event *event); > + void (*event_occurs)(void *user, > +#ifndef LIBXL_HAVE_NONCONST_EVENT_OCCURS_EVENT_ARG > + const > +#endif > + libxl_event *event); > void (*disaster)(void *user, libxl_event_type type, > const char *msg, int errnoval); > } libxl_event_hooks; > Otherwise, Reviewed-by: Jim Fehlig <jfehlig@xxxxxxxx> _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |