[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v8 4/4] Introduce the pvcalls header
On Fri, Mar 31, 2017 at 12:15:19PM -0700, Stefano Stabellini wrote: > Define the ring and request and response structs according to the > specification. Use the new DEFINE_XEN_FLEX_RING macro. > > Add the header to the C99 check. > > Signed-off-by: Stefano Stabellini <stefano@xxxxxxxxxxx> > CC: JBeulich@xxxxxxxx > CC: konrad.wilk@xxxxxxxxxx Reviewed-by: Konrad Rzeszutek Wilk <konrad.wilk@xxxxxxxxxx> > --- > xen/include/Makefile | 3 +- > xen/include/public/io/pvcalls.h | 153 > ++++++++++++++++++++++++++++++++++++++++ > 2 files changed, 155 insertions(+), 1 deletion(-) > create mode 100644 xen/include/public/io/pvcalls.h > > diff --git a/xen/include/Makefile b/xen/include/Makefile > index a241444..56b389e 100644 > --- a/xen/include/Makefile > +++ b/xen/include/Makefile > @@ -94,10 +94,11 @@ all: headers.chk headers99.chk headers++.chk > > PUBLIC_HEADERS := $(filter-out public/arch-% public/dom0_ops.h, $(wildcard > public/*.h public/*/*.h) $(public-y)) > > -PUBLIC_C99_HEADERS := public/io/9pfs.h > +PUBLIC_C99_HEADERS := public/io/9pfs.h public/io/pvcalls.h > PUBLIC_ANSI_HEADERS := $(filter-out public/%ctl.h public/xsm/% > public/%hvm/save.h $(PUBLIC_C99_HEADERS), $(PUBLIC_HEADERS)) > > public/io/9pfs.h-prereq := string > +public/io/pvcalls.h-prereq := string > > headers.chk: $(PUBLIC_ANSI_HEADERS) Makefile > for i in $(filter %.h,$^); do \ > diff --git a/xen/include/public/io/pvcalls.h b/xen/include/public/io/pvcalls.h > new file mode 100644 > index 0000000..cb81712 > --- /dev/null > +++ b/xen/include/public/io/pvcalls.h > @@ -0,0 +1,153 @@ > +/* > + * pvcalls.h -- Xen PV Calls Protocol > + * > + * Refer to docs/misc/pvcalls.markdown for the specification > + * > + * Permission is hereby granted, free of charge, to any person obtaining a > copy > + * of this software and associated documentation files (the "Software"), to > + * deal in the Software without restriction, including without limitation the > + * rights to use, copy, modify, merge, publish, distribute, sublicense, > and/or > + * sell copies of the Software, and to permit persons to whom the Software is > + * furnished to do so, subject to the following conditions: > + * > + * The above copyright notice and this permission notice shall be included in > + * all copies or substantial portions of the Software. > + * > + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR > + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, > + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL > THE > + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER > + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING > + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER > + * DEALINGS IN THE SOFTWARE. > + * > + * Copyright (C) 2017 Stefano Stabellini <stefano@xxxxxxxxxxx> > + */ > + > +#ifndef __XEN_PUBLIC_IO_PVCALLS_H__ > +#define __XEN_PUBLIC_IO_PVCALLS_H__ > + > +#include "../grant_table.h" > +#include "ring.h" > + > +/* > + * See docs/misc/pvcalls.markdown in xen.git for the full specification: > + * https://xenbits.xen.org/docs/unstable/misc/pvcalls.html > + */ > +struct pvcalls_data_intf { > + RING_IDX in_cons, in_prod, in_error; > + > + uint8_t pad1[52]; > + > + RING_IDX out_cons, out_prod, out_error; > + > + uint8_t pad2[52]; > + > + RING_IDX ring_order; > + grant_ref_t ref[]; > +}; > +DEFINE_XEN_FLEX_RING(pvcalls); > + > +#define PVCALLS_SOCKET 0 > +#define PVCALLS_CONNECT 1 > +#define PVCALLS_RELEASE 2 > +#define PVCALLS_BIND 3 > +#define PVCALLS_LISTEN 4 > +#define PVCALLS_ACCEPT 5 > +#define PVCALLS_POLL 6 > + > +struct xen_pvcalls_request { > + uint32_t req_id; /* private to guest, echoed in response */ > + uint32_t cmd; /* command to execute */ > + union { > + struct xen_pvcalls_socket { > + uint64_t id; > + uint32_t domain; > + uint32_t type; > + uint32_t protocol; > + } socket; > + struct xen_pvcalls_connect { > + uint64_t id; > + uint8_t addr[28]; > + uint32_t len; > + uint32_t flags; > + grant_ref_t ref; > + uint32_t evtchn; > + } connect; > + struct xen_pvcalls_release { > + uint64_t id; > + uint8_t reuse; > + } release; > + struct xen_pvcalls_bind { > + uint64_t id; > + uint8_t addr[28]; > + uint32_t len; > + } bind; > + struct xen_pvcalls_listen { > + uint64_t id; > + uint32_t backlog; > + } listen; > + struct xen_pvcalls_accept { > + uint64_t id; > + uint64_t id_new; > + grant_ref_t ref; > + uint32_t evtchn; > + } accept; > + struct xen_pvcalls_poll { > + uint64_t id; > + } poll; > + /* dummy member to force sizeof(struct xen_pvcalls_request) > + * to match across archs */ > + struct xen_pvcalls_dummy { > + uint8_t dummy[56]; > + } dummy; > + } u; > +}; > + > +struct xen_pvcalls_response { > + uint32_t req_id; > + uint32_t cmd; > + int32_t ret; > + uint32_t pad; > + union { > + struct _xen_pvcalls_socket { > + uint64_t id; > + } socket; > + struct _xen_pvcalls_connect { > + uint64_t id; > + } connect; > + struct _xen_pvcalls_release { > + uint64_t id; > + } release; > + struct _xen_pvcalls_bind { > + uint64_t id; > + } bind; > + struct _xen_pvcalls_listen { > + uint64_t id; > + } listen; > + struct _xen_pvcalls_accept { > + uint64_t id; > + } accept; > + struct _xen_pvcalls_poll { > + uint64_t id; > + } poll; > + struct _xen_pvcalls_dummy { > + uint8_t dummy[8]; > + } dummy; > + } u; > +}; > + > +DEFINE_RING_TYPES(xen_pvcalls, struct xen_pvcalls_request, > + struct xen_pvcalls_response); > + > +#endif > + > +/* > + * Local variables: > + * mode: C > + * c-file-style: "BSD" > + * c-basic-offset: 4 > + * tab-width: 4 > + * indent-tabs-mode: nil > + * End: > + */ > -- > 1.9.1 > _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx https://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |