On Mon, 15 Nov 2010, Alexander Graf wrote:
> > /*
> > - * tweaks needed to build with different xen versions
> > - * 0x00030205 -> 3.1.0
> > - * 0x00030207 -> 3.2.0
> > - * 0x00030208 -> unstable
> > + * We don't support Xen prior to 3.3.0.
> > */
> > -#include <xen/xen-compat.h>
> > -#if __XEN_LATEST_INTERFACE_VERSION__ < 0x00030205
> > -# define evtchn_port_or_error_t int
> > -#endif
> > -#if __XEN_LATEST_INTERFACE_VERSION__ < 0x00030207
> > -# define xc_map_foreign_pages xc_map_foreign_batch
> > -#endif
> > -#if __XEN_LATEST_INTERFACE_VERSION__ < 0x00030208
> > -# define xen_mb() mb()
> > -# define xen_rmb() rmb()
> > -# define xen_wmb() wmb()
> > +
> > +/* Xen unstable */
> > +#if CONFIG_XEN_CTRL_INTERFACE_VERSION < 410
> > +typedef int qemu_xc_interface;
> > +# define XC_HANDLER_INITIAL_VALUE -1
> > +# define xc_fd(xen_xc) xen_xc
> > +# define xc_interface_open(l, dl, f) xc_interface_open()
> > +# define xc_gnttab_open(xc) xc_gnttab_open()
> > +# define xc_gnttab_map_grant_ref(xc, gnt, domid, ref, flags) \
> > + xc_gnttab_map_grant_ref(gnt, domid, ref, flags)
> > +# define xc_gnttab_map_grant_refs(xc, gnt, count, domids, refs, flags) \
> > + xc_gnttab_map_grant_refs(gnt, count, domids, refs, flags)
> > +# define xc_gnttab_munmap(xc, gnt, pages, niov) xc_gnttab_munmap(gnt,
> > pages, niov)
> > +# define xc_gnttab_close(xc, dev) xc_gnttab_close(dev)
>
> All these defines are very icky. In my patchset I replace all those libxc
> calls by indirect calls through a struct anyways. Maybe it'd make sense to
> integrate that part into your series already.
>
> That way you could make this whole compat stuff a lot cleaner. You could use
> static inline functions to create wrappers to the real calls and just assign
> those as callbacks in the dispatch struct.
>
> In general, I'd disagree to the preprocessor approach here. If you're not
> going with the libxc dispatch struct patch, I'd at least like to see all
> those converted to static inline functions called with different names
> internally.
>
Yeah, I am not a fan of preprocessor magic as well, it is probably worth
investigating the indirect calls approach, surely would be easier to
read.
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|