Re: [PATCH v2 01/18] xen: introduce the pvcalls interface header

2017-06-01 Thread Stefano Stabellini
On Thu, 25 May 2017, Boris Ostrovsky wrote:
> On 05/19/2017 07:22 PM, Stefano Stabellini wrote:
> > 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 
> > CC: konrad.w...@oracle.com
> > CC: boris.ostrov...@oracle.com
> > CC: jgr...@suse.com
> > ---
> >  include/xen/interface/io/pvcalls.h | 120 
> > +
> >  1 file changed, 120 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 000..0d41959
> > --- /dev/null
> > +++ b/include/xen/interface/io/pvcalls.h
> > @@ -0,0 +1,120 @@
> > +#ifndef __XEN_PUBLIC_IO_XEN_PVCALLS_H__
> > +#define __XEN_PUBLIC_IO_XEN_PVCALLS_H__
> > +
> > +#include 
> > +#include "xen/interface/io/ring.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[];
> 
> I think you should also include .
> 
> In fact, ring.h probably needs to do it too.

I'll do, thanks


Re: [PATCH v2 01/18] xen: introduce the pvcalls interface header

2017-06-01 Thread Stefano Stabellini
On Thu, 25 May 2017, Boris Ostrovsky wrote:
> On 05/19/2017 07:22 PM, Stefano Stabellini wrote:
> > 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 
> > CC: konrad.w...@oracle.com
> > CC: boris.ostrov...@oracle.com
> > CC: jgr...@suse.com
> > ---
> >  include/xen/interface/io/pvcalls.h | 120 
> > +
> >  1 file changed, 120 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 000..0d41959
> > --- /dev/null
> > +++ b/include/xen/interface/io/pvcalls.h
> > @@ -0,0 +1,120 @@
> > +#ifndef __XEN_PUBLIC_IO_XEN_PVCALLS_H__
> > +#define __XEN_PUBLIC_IO_XEN_PVCALLS_H__
> > +
> > +#include 
> > +#include "xen/interface/io/ring.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[];
> 
> I think you should also include .
> 
> In fact, ring.h probably needs to do it too.

I'll do, thanks


Re: [PATCH v2 01/18] xen: introduce the pvcalls interface header

2017-05-25 Thread Boris Ostrovsky
On 05/19/2017 07:22 PM, Stefano Stabellini wrote:
> 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 
> CC: konrad.w...@oracle.com
> CC: boris.ostrov...@oracle.com
> CC: jgr...@suse.com
> ---
>  include/xen/interface/io/pvcalls.h | 120 
> +
>  1 file changed, 120 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 000..0d41959
> --- /dev/null
> +++ b/include/xen/interface/io/pvcalls.h
> @@ -0,0 +1,120 @@
> +#ifndef __XEN_PUBLIC_IO_XEN_PVCALLS_H__
> +#define __XEN_PUBLIC_IO_XEN_PVCALLS_H__
> +
> +#include 
> +#include "xen/interface/io/ring.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[];

I think you should also include .

In fact, ring.h probably needs to do it too.

-boris



Re: [PATCH v2 01/18] xen: introduce the pvcalls interface header

2017-05-25 Thread Boris Ostrovsky
On 05/19/2017 07:22 PM, Stefano Stabellini wrote:
> 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 
> CC: konrad.w...@oracle.com
> CC: boris.ostrov...@oracle.com
> CC: jgr...@suse.com
> ---
>  include/xen/interface/io/pvcalls.h | 120 
> +
>  1 file changed, 120 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 000..0d41959
> --- /dev/null
> +++ b/include/xen/interface/io/pvcalls.h
> @@ -0,0 +1,120 @@
> +#ifndef __XEN_PUBLIC_IO_XEN_PVCALLS_H__
> +#define __XEN_PUBLIC_IO_XEN_PVCALLS_H__
> +
> +#include 
> +#include "xen/interface/io/ring.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[];

I think you should also include .

In fact, ring.h probably needs to do it too.

-boris



[PATCH v2 01/18] xen: introduce the pvcalls interface header

2017-05-19 Thread Stefano Stabellini
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 
CC: konrad.w...@oracle.com
CC: boris.ostrov...@oracle.com
CC: jgr...@suse.com
---
 include/xen/interface/io/pvcalls.h | 120 +
 1 file changed, 120 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 000..0d41959
--- /dev/null
+++ b/include/xen/interface/io/pvcalls.h
@@ -0,0 +1,120 @@
+#ifndef __XEN_PUBLIC_IO_XEN_PVCALLS_H__
+#define __XEN_PUBLIC_IO_XEN_PVCALLS_H__
+
+#include 
+#include "xen/interface/io/ring.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_CONNECT1
+#define PVCALLS_RELEASE2
+#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
-- 
1.9.1



[PATCH v2 01/18] xen: introduce the pvcalls interface header

2017-05-19 Thread Stefano Stabellini
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 
CC: konrad.w...@oracle.com
CC: boris.ostrov...@oracle.com
CC: jgr...@suse.com
---
 include/xen/interface/io/pvcalls.h | 120 +
 1 file changed, 120 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 000..0d41959
--- /dev/null
+++ b/include/xen/interface/io/pvcalls.h
@@ -0,0 +1,120 @@
+#ifndef __XEN_PUBLIC_IO_XEN_PVCALLS_H__
+#define __XEN_PUBLIC_IO_XEN_PVCALLS_H__
+
+#include 
+#include "xen/interface/io/ring.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_CONNECT1
+#define PVCALLS_RELEASE2
+#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
-- 
1.9.1