From: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
To: Stefano Stabellini <sstabellini@kernel.org>
Cc: Stefano Stabellini <stefano@aporeto.com>,
xen-devel@lists.xenproject.org, JBeulich@suse.com
Subject: Re: [PATCH v8 4/4] Introduce the pvcalls header
Date: Tue, 4 Apr 2017 15:50:51 -0400 [thread overview]
Message-ID: <20170404195051.GD29986@char.us.oracle.com> (raw)
In-Reply-To: <1490987719-25452-4-git-send-email-sstabellini@kernel.org>
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@aporeto.com>
> CC: JBeulich@suse.com
> CC: konrad.wilk@oracle.com
Reviewed-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
> ---
> 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@aporeto.com>
> + */
> +
> +#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@lists.xen.org
https://lists.xen.org/xen-devel
next prev parent reply other threads:[~2017-04-04 19:51 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-03-31 19:15 [PATCH v8 0/4] new ring macros, 9pfs and pvcalls headers Stefano Stabellini
2017-03-31 19:15 ` [PATCH v8 1/4] ring.h: introduce macros to handle monodirectional rings with multiple req sizes Stefano Stabellini
2017-03-31 19:15 ` [PATCH v8 2/4] xen: introduce a C99 headers check Stefano Stabellini
2017-04-03 8:15 ` Jan Beulich
2017-04-03 18:25 ` Stefano Stabellini
2017-04-04 7:59 ` Jan Beulich
2017-04-05 0:12 ` Stefano Stabellini
2017-03-31 19:15 ` [PATCH v8 3/4] Introduce the Xen 9pfs transport header Stefano Stabellini
2017-04-04 19:50 ` Konrad Rzeszutek Wilk
2017-03-31 19:15 ` [PATCH v8 4/4] Introduce the pvcalls header Stefano Stabellini
2017-04-04 19:50 ` Konrad Rzeszutek Wilk [this message]
2017-04-04 19:49 ` [PATCH v8 1/4] ring.h: introduce macros to handle monodirectional rings with multiple req sizes Konrad Rzeszutek Wilk
2017-04-04 23:47 ` Stefano Stabellini
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20170404195051.GD29986@char.us.oracle.com \
--to=konrad.wilk@oracle.com \
--cc=JBeulich@suse.com \
--cc=sstabellini@kernel.org \
--cc=stefano@aporeto.com \
--cc=xen-devel@lists.xenproject.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).