|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH QEMU-XEN v3 2/8] xen: Switch to libxengnttab interface for compat shims.
On Wed, 7 Oct 2015, Ian Campbell wrote:
> In Xen 4.7 we are refactoring parts libxenctrl into a number of
> separate libraries which will provide backward and forward API and ABI
> compatiblity.
>
> One such library will be libxengnttab which provides access to grant
> tables.
>
> In preparation for this switch the compatibility layer in xen_common.h
> (which support building with older versions of Xen) to use what will
> be the new library API. This means that the gnttab shim will disappear
> for versions of Xen which include libxengnttab.
>
> To simplify things for the <= 4.0.0 support we wrap the int fd in a
> malloc(sizeof int) such that the handle is always a pointer. This
> leads to less typedef headaches and the need for
> XC_HANDLER_INITIAL_VALUE etc for these interfaces.
>
> Build tested with 4.0 and 4.5.
>
> Note that this patch does not add any support for actually using
> libxengnttab, it just adjusts the existing shims.
>
> Signed-off-by: Ian Campbell <ian.campbell@xxxxxxxxxx>
[...]
> diff --git a/include/hw/xen/xen_common.h b/include/hw/xen/xen_common.h
> index 5700c1b..3955d86 100644
> --- a/include/hw/xen/xen_common.h
> +++ b/include/hw/xen/xen_common.h
> @@ -40,7 +40,7 @@ static inline void *xc_map_foreign_bulk(int xc_handle,
> uint32_t dom, int prot,
>
> typedef int XenXC;
> typedef int xenevtchn_handle;
> -typedef int XenGnttab;
> +typedef int xengnttab_handle;
>
> # define XC_INTERFACE_FMT "%i"
> # define XC_HANDLER_INITIAL_VALUE -1
> @@ -71,11 +71,29 @@ static inline int xenevtchn_close(xenevtchn_handle *h)
> #define xenevtchn_unmask(h,p) xc_evtchn_unmask(*h,p)
> #define xenevtchn_unbind(h,p) xc_evtchn_unmask(*h,p)
>
> -static inline XenGnttab xen_xc_gnttab_open(void *logger,
> - unsigned int open_flags)
> +static inline xengnttab_handle *xengnttab_open(void *logger,
> + unsigned int open_flags)
> {
> - return xc_gnttab_open();
> + int *h = malloc(sizeof h);
^
sizeof (*h)
> + if (!h)
> + return NULL;
indentation
> + *h = xc_gnttab_open();
> + if (*h == -1) {
> + free(h);
> + h = NULL;
> + }
> + return h;
> }
> +static inline int xengnttab_close(xengnttab_handle *h)
> +{
> + int rc = xc_gnttab_close(*h);
> + free(h);
> + return rc;
> +}
> +#define xengnttab_set_max_grants(h,n) xc_gnttab_set_max_grants(*h, n)
> +#define xengnttab_map_grant_ref(h,d,r,p) xc_gnttab_map_grant_ref(*h,d,r,p)
> +#define xengnttab_map_grant_refs(h,c,d,r,p)
> xc_gnttab_map_grant_refs(*h,c,d,r,p)
> +#define xengnttab_munmap(h,a,n) xc_gnttab_munmap(*h,a,n)
>
> static inline XenXC xen_xc_interface_open(void *logger, void
> *dombuild_logger,
> unsigned int open_flags)
> @@ -129,7 +147,7 @@ static inline void xs_close(struct xs_handle *xsh)
>
> typedef xc_interface *XenXC;
> typedef xc_evtchn xenevtchn_handle;
> -typedef xc_gnttab *XenGnttab;
> +typedef xc_gnttab xengnttab_handle;
>
> # define XC_INTERFACE_FMT "%p"
> # define XC_HANDLER_INITIAL_VALUE NULL
> @@ -143,11 +161,12 @@ typedef xc_gnttab *XenGnttab;
> #define xenevtchn_unmask(h,p) xc_evtchn_unmask(h,p)
> #define xenevtchn_unbind(h,p) xc_evtchn_unbind(h,p)
>
> -static inline XenGnttab xen_xc_gnttab_open(void *logger,
> - unsigned int open_flags)
> -{
> - return xc_gnttab_open(logger, open_flags);
> -}
> +#define xengnttab_open(l,f) xc_gnttab_open(l,f)
> +#define xengnttab_close(h) xc_gnttab_close(h)
> +#define xengnttab_set_max_grants(h,n) xc_gnttab_set_max_grants(h, n)
> +#define xengnttab_map_grant_ref(h,d,r,p) xc_gnttab_map_grant_ref(h,d,r,p)
> +#define xengnttab_munmap(h,a,n) xc_gnttab_munmap(h,a,n)
> +#define xengnttab_map_grant_refs(h,c,d,r,p)
> xc_gnttab_map_grant_refs(h,c,d,r,p)
>
> static inline XenXC xen_xc_interface_open(void *logger, void
> *dombuild_logger,
> unsigned int open_flags)
> --
> 2.1.4
>
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |