|
[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 |