From: Stefano Stabellini <sstabellini@kernel.org>
To: xen-devel@lists.xen.org
Cc: jgross@suse.com, sstabellini@kernel.org,
linux-kernel@vger.kernel.org,
Stefano Stabellini <stefano@aporeto.com>,
boris.ostrovsky@oracle.com
Subject: [PATCH v7 01/18] xen: introduce the pvcalls interface header
Date: Wed, 5 Jul 2017 14:50:41 -0700 [thread overview]
Message-ID: <1499291458-30231-1-git-send-email-sstabellini@kernel.org> (raw)
In-Reply-To: <alpine.DEB.2.10.1707051447010.2919@sstabellini-ThinkPad-X260>
Introduce the C header file which defines the PV Calls interface. It is
imported from xen/include/public/io/pvcalls.h.
Signed-off-by: Stefano Stabellini <stefano@aporeto.com>
Reviewed-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
Reviewed-by: Juergen Gross <jgross@suse.com>
CC: konrad.wilk@oracle.com
CC: boris.ostrovsky@oracle.com
CC: jgross@suse.com
---
include/xen/interface/io/pvcalls.h | 121 +++++++++++++++++++++++++++++++++++++
include/xen/interface/io/ring.h | 2 +
2 files changed, 123 insertions(+)
create mode 100644 include/xen/interface/io/pvcalls.h
diff --git a/include/xen/interface/io/pvcalls.h b/include/xen/interface/io/pvcalls.h
new file mode 100644
index 0000000..ccf97b8
--- /dev/null
+++ b/include/xen/interface/io/pvcalls.h
@@ -0,0 +1,121 @@
+#ifndef __XEN_PUBLIC_IO_XEN_PVCALLS_H__
+#define __XEN_PUBLIC_IO_XEN_PVCALLS_H__
+
+#include <linux/net.h>
+#include <xen/interface/io/ring.h>
+#include <xen/interface/grant_table.h>
+
+/* "1" means socket, connect, release, bind, listen, accept and poll */
+#define XENBUS_FUNCTIONS_CALLS "1"
+
+/*
+ * 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
diff --git a/include/xen/interface/io/ring.h b/include/xen/interface/io/ring.h
index c794568..e547088 100644
--- a/include/xen/interface/io/ring.h
+++ b/include/xen/interface/io/ring.h
@@ -9,6 +9,8 @@
#ifndef __XEN_PUBLIC_IO_RING_H__
#define __XEN_PUBLIC_IO_RING_H__
+#include <xen/interface/grant_table.h>
+
typedef unsigned int RING_IDX;
/* Round a 32-bit unsigned constant down to the nearest power of two. */
--
1.9.1
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel
next parent reply other threads:[~2017-07-05 21:50 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <alpine.DEB.2.10.1707051447010.2919@sstabellini-ThinkPad-X260>
2017-07-05 21:50 ` Stefano Stabellini [this message]
2017-07-05 21:50 ` [PATCH v7 02/18] xen/pvcalls: introduce the pvcalls xenbus backend Stefano Stabellini
2017-07-05 21:50 ` [PATCH v7 03/18] xen/pvcalls: initialize the module and register the " Stefano Stabellini
2017-07-05 21:50 ` [PATCH v7 04/18] xen/pvcalls: xenbus state handling Stefano Stabellini
2017-07-06 7:19 ` Juergen Gross
2017-07-05 21:50 ` [PATCH v7 05/18] xen/pvcalls: connect to a frontend Stefano Stabellini
2017-07-06 7:20 ` Juergen Gross
2017-07-05 21:50 ` [PATCH v7 06/18] xen/pvcalls: handle commands from the frontend Stefano Stabellini
2017-07-06 7:23 ` Juergen Gross
2017-07-05 21:50 ` [PATCH v7 07/18] xen/pvcalls: implement socket command Stefano Stabellini
2017-07-05 21:50 ` [PATCH v7 08/18] xen/pvcalls: implement connect command Stefano Stabellini
2017-07-05 21:50 ` [PATCH v7 09/18] xen/pvcalls: implement bind command Stefano Stabellini
2017-07-06 7:25 ` Juergen Gross
2017-07-05 21:50 ` [PATCH v7 10/18] xen/pvcalls: implement listen command Stefano Stabellini
2017-07-05 21:50 ` [PATCH v7 11/18] xen/pvcalls: implement accept command Stefano Stabellini
2017-07-05 21:50 ` [PATCH v7 12/18] xen/pvcalls: implement poll command Stefano Stabellini
2017-07-05 21:50 ` [PATCH v7 13/18] xen/pvcalls: implement release command Stefano Stabellini
2017-07-05 21:50 ` [PATCH v7 14/18] xen/pvcalls: disconnect and module_exit Stefano Stabellini
2017-07-06 7:26 ` Juergen Gross
2017-07-05 21:50 ` [PATCH v7 15/18] xen/pvcalls: implement the ioworker functions Stefano Stabellini
2017-07-06 7:27 ` Juergen Gross
2017-07-05 21:50 ` [PATCH v7 16/18] xen/pvcalls: implement read Stefano Stabellini
2017-07-05 21:50 ` [PATCH v7 17/18] xen/pvcalls: implement write Stefano Stabellini
2017-07-05 21:50 ` [PATCH v7 18/18] xen: introduce a Kconfig option to enable the pvcalls backend Stefano Stabellini
[not found] ` <1499291458-30231-8-git-send-email-sstabellini@kernel.org>
2017-07-06 7:24 ` [PATCH v7 08/18] xen/pvcalls: implement connect command Juergen Gross
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=1499291458-30231-1-git-send-email-sstabellini@kernel.org \
--to=sstabellini@kernel.org \
--cc=boris.ostrovsky@oracle.com \
--cc=jgross@suse.com \
--cc=linux-kernel@vger.kernel.org \
--cc=stefano@aporeto.com \
--cc=xen-devel@lists.xen.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).