Linux Audio

Check our new training course

Loading...
v6.13.7
  1/* SPDX-License-Identifier: MIT */
  2
  3#ifndef __XEN_PUBLIC_IO_XEN_PVCALLS_H__
  4#define __XEN_PUBLIC_IO_XEN_PVCALLS_H__
  5
  6#include <linux/net.h>
  7#include <xen/interface/io/ring.h>
  8#include <xen/interface/grant_table.h>
  9
 10/* "1" means socket, connect, release, bind, listen, accept and poll */
 11#define XENBUS_FUNCTIONS_CALLS "1"
 12
 13/*
 14 * See docs/misc/pvcalls.markdown in xen.git for the full specification:
 15 * https://xenbits.xen.org/docs/unstable/misc/pvcalls.html
 16 */
 17struct pvcalls_data_intf {
 18    RING_IDX in_cons, in_prod, in_error;
 19
 20    uint8_t pad1[52];
 21
 22    RING_IDX out_cons, out_prod, out_error;
 23
 24    uint8_t pad2[52];
 25
 26    RING_IDX ring_order;
 27    grant_ref_t ref[];
 28};
 29DEFINE_XEN_FLEX_RING(pvcalls);
 30
 31#define PVCALLS_SOCKET         0
 32#define PVCALLS_CONNECT        1
 33#define PVCALLS_RELEASE        2
 34#define PVCALLS_BIND           3
 35#define PVCALLS_LISTEN         4
 36#define PVCALLS_ACCEPT         5
 37#define PVCALLS_POLL           6
 38
 39struct xen_pvcalls_request {
 40    uint32_t req_id; /* private to guest, echoed in response */
 41    uint32_t cmd;    /* command to execute */
 42    union {
 43        struct xen_pvcalls_socket {
 44            uint64_t id;
 45            uint32_t domain;
 46            uint32_t type;
 47            uint32_t protocol;
 48        } socket;
 49        struct xen_pvcalls_connect {
 50            uint64_t id;
 51            uint8_t addr[28];
 52            uint32_t len;
 53            uint32_t flags;
 54            grant_ref_t ref;
 55            uint32_t evtchn;
 56        } connect;
 57        struct xen_pvcalls_release {
 58            uint64_t id;
 59            uint8_t reuse;
 60        } release;
 61        struct xen_pvcalls_bind {
 62            uint64_t id;
 63            uint8_t addr[28];
 64            uint32_t len;
 65        } bind;
 66        struct xen_pvcalls_listen {
 67            uint64_t id;
 68            uint32_t backlog;
 69        } listen;
 70        struct xen_pvcalls_accept {
 71            uint64_t id;
 72            uint64_t id_new;
 73            grant_ref_t ref;
 74            uint32_t evtchn;
 75        } accept;
 76        struct xen_pvcalls_poll {
 77            uint64_t id;
 78        } poll;
 79        /* dummy member to force sizeof(struct xen_pvcalls_request)
 80         * to match across archs */
 81        struct xen_pvcalls_dummy {
 82            uint8_t dummy[56];
 83        } dummy;
 84    } u;
 85};
 86
 87struct xen_pvcalls_response {
 88    uint32_t req_id;
 89    uint32_t cmd;
 90    int32_t ret;
 91    uint32_t pad;
 92    union {
 93        struct _xen_pvcalls_socket {
 94            uint64_t id;
 95        } socket;
 96        struct _xen_pvcalls_connect {
 97            uint64_t id;
 98        } connect;
 99        struct _xen_pvcalls_release {
100            uint64_t id;
101        } release;
102        struct _xen_pvcalls_bind {
103            uint64_t id;
104        } bind;
105        struct _xen_pvcalls_listen {
106            uint64_t id;
107        } listen;
108        struct _xen_pvcalls_accept {
109            uint64_t id;
110        } accept;
111        struct _xen_pvcalls_poll {
112            uint64_t id;
113        } poll;
114        struct _xen_pvcalls_dummy {
115            uint8_t dummy[8];
116        } dummy;
117    } u;
118};
119
120DEFINE_RING_TYPES(xen_pvcalls, struct xen_pvcalls_request,
121                  struct xen_pvcalls_response);
122
123#endif
v5.4
 
 
  1#ifndef __XEN_PUBLIC_IO_XEN_PVCALLS_H__
  2#define __XEN_PUBLIC_IO_XEN_PVCALLS_H__
  3
  4#include <linux/net.h>
  5#include <xen/interface/io/ring.h>
  6#include <xen/interface/grant_table.h>
  7
  8/* "1" means socket, connect, release, bind, listen, accept and poll */
  9#define XENBUS_FUNCTIONS_CALLS "1"
 10
 11/*
 12 * See docs/misc/pvcalls.markdown in xen.git for the full specification:
 13 * https://xenbits.xen.org/docs/unstable/misc/pvcalls.html
 14 */
 15struct pvcalls_data_intf {
 16    RING_IDX in_cons, in_prod, in_error;
 17
 18    uint8_t pad1[52];
 19
 20    RING_IDX out_cons, out_prod, out_error;
 21
 22    uint8_t pad2[52];
 23
 24    RING_IDX ring_order;
 25    grant_ref_t ref[];
 26};
 27DEFINE_XEN_FLEX_RING(pvcalls);
 28
 29#define PVCALLS_SOCKET         0
 30#define PVCALLS_CONNECT        1
 31#define PVCALLS_RELEASE        2
 32#define PVCALLS_BIND           3
 33#define PVCALLS_LISTEN         4
 34#define PVCALLS_ACCEPT         5
 35#define PVCALLS_POLL           6
 36
 37struct xen_pvcalls_request {
 38    uint32_t req_id; /* private to guest, echoed in response */
 39    uint32_t cmd;    /* command to execute */
 40    union {
 41        struct xen_pvcalls_socket {
 42            uint64_t id;
 43            uint32_t domain;
 44            uint32_t type;
 45            uint32_t protocol;
 46        } socket;
 47        struct xen_pvcalls_connect {
 48            uint64_t id;
 49            uint8_t addr[28];
 50            uint32_t len;
 51            uint32_t flags;
 52            grant_ref_t ref;
 53            uint32_t evtchn;
 54        } connect;
 55        struct xen_pvcalls_release {
 56            uint64_t id;
 57            uint8_t reuse;
 58        } release;
 59        struct xen_pvcalls_bind {
 60            uint64_t id;
 61            uint8_t addr[28];
 62            uint32_t len;
 63        } bind;
 64        struct xen_pvcalls_listen {
 65            uint64_t id;
 66            uint32_t backlog;
 67        } listen;
 68        struct xen_pvcalls_accept {
 69            uint64_t id;
 70            uint64_t id_new;
 71            grant_ref_t ref;
 72            uint32_t evtchn;
 73        } accept;
 74        struct xen_pvcalls_poll {
 75            uint64_t id;
 76        } poll;
 77        /* dummy member to force sizeof(struct xen_pvcalls_request)
 78         * to match across archs */
 79        struct xen_pvcalls_dummy {
 80            uint8_t dummy[56];
 81        } dummy;
 82    } u;
 83};
 84
 85struct xen_pvcalls_response {
 86    uint32_t req_id;
 87    uint32_t cmd;
 88    int32_t ret;
 89    uint32_t pad;
 90    union {
 91        struct _xen_pvcalls_socket {
 92            uint64_t id;
 93        } socket;
 94        struct _xen_pvcalls_connect {
 95            uint64_t id;
 96        } connect;
 97        struct _xen_pvcalls_release {
 98            uint64_t id;
 99        } release;
100        struct _xen_pvcalls_bind {
101            uint64_t id;
102        } bind;
103        struct _xen_pvcalls_listen {
104            uint64_t id;
105        } listen;
106        struct _xen_pvcalls_accept {
107            uint64_t id;
108        } accept;
109        struct _xen_pvcalls_poll {
110            uint64_t id;
111        } poll;
112        struct _xen_pvcalls_dummy {
113            uint8_t dummy[8];
114        } dummy;
115    } u;
116};
117
118DEFINE_RING_TYPES(xen_pvcalls, struct xen_pvcalls_request,
119                  struct xen_pvcalls_response);
120
121#endif