From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jim Fehlig Subject: Re: [PATCH] libxl: unconst the event argument to the event_occurs hook. Date: Fri, 26 Apr 2013 15:22:57 -0600 Message-ID: <517AF031.4070004@suse.com> References: <1366976544-3428-1-git-send-email-ian.campbell@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <1366976544-3428-1-git-send-email-ian.campbell@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: Ian Campbell Cc: Ian.Jackson@citrix.com, George.Dunlap@citix.com, Rob Hoes , xen-devel@lists.xen.org List-Id: xen-devel@lists.xenproject.org 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 > Cc: Ian.Jackson@citrix.com > Cc: George.Dunlap@citix.com > Cc: Jim Fehlig > Cc: Rob Hoes > --- > 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 > #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