On 05/16/2013 10:01 AM, Jim Fehlig wrote:
Xen 4.3 fixes a mistake in the libxl event handler signature where
the
event owned by the application was defined as const. Detect this and
define the libvirt libxl event handler signature appropriately.
---
src/libxl/libxl_driver.c | 7 ++++++-
1 files changed, 6 insertions(+), 1 deletions(-)
diff --git a/src/libxl/libxl_driver.c b/src/libxl/libxl_driver.c
index b39e005..74e8331 100644
--- a/src/libxl/libxl_driver.c
+++ b/src/libxl/libxl_driver.c
@@ -700,7 +700,12 @@ libxlVmReap(libxlDriverPrivatePtr driver,
* Handle previously registered event notification from libxenlight
*/
static void
-libxlEventHandler(void *data ATTRIBUTE_UNUSED, const libxl_event *event)
+libxlEventHandler(void *data ATTRIBUTE_UNUSED,
+#ifdef LIBXL_HAVE_NONCONST_EVENT_OCCURS_EVENT_ARG
+ libxl_event *event)
+#else
+ const libxl_event *event)
+#endif
This works, but I'm not a fan of mid-() #ifdefs (it doesn't work if the
() itself is part of a macro call). I'd much rather see:
#ifdef LIBXL_HAVE_NONCONST_EVENT_OCCURS_EVENT_ARG
# define VIR_LIBXL_EVENT_CONST /* empty */
#else
# define VIR_LIBXL_EVENT_CONST const
#endif
static void
libxlEventHandler(void *data ATTRIBUTE_UNUSED,
VIR_LIBXL_EVENT_CONST libxl_event *event)
{
--
Eric Blake eblake redhat com +1-919-301-3266
Libvirt virtualization library
http://libvirt.org