The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/xen/interface/io/pvcalls.h

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /*
    2  * pvcalls.h -- Xen PV Calls Protocol
    3  *
    4  * Refer to docs/misc/pvcalls.markdown for the specification
    5  *
    6  * The header is provided as a C reference for the specification. In
    7  * case of conflict, the specification is authoritative.
    8  *
    9  * Permission is hereby granted, free of charge, to any person obtaining a copy
   10  * of this software and associated documentation files (the "Software"), to
   11  * deal in the Software without restriction, including without limitation the
   12  * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
   13  * sell copies of the Software, and to permit persons to whom the Software is
   14  * furnished to do so, subject to the following conditions:
   15  *
   16  * The above copyright notice and this permission notice shall be included in
   17  * all copies or substantial portions of the Software.
   18  *
   19  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
   20  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
   21  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
   22  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
   23  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
   24  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
   25  * DEALINGS IN THE SOFTWARE.
   26  *
   27  * Copyright (C) 2017 Stefano Stabellini <stefano@aporeto.com>
   28  */
   29 
   30 #ifndef __XEN_PUBLIC_IO_PVCALLS_H__
   31 #define __XEN_PUBLIC_IO_PVCALLS_H__
   32 
   33 #include "../grant_table.h"
   34 #include "ring.h"
   35 
   36 /*
   37  * See docs/misc/pvcalls.markdown in xen.git for the full specification:
   38  * https://xenbits.xen.org/docs/unstable/misc/pvcalls.html
   39  */
   40 struct pvcalls_data_intf {
   41     RING_IDX in_cons, in_prod, in_error;
   42 
   43     uint8_t pad1[52];
   44 
   45     RING_IDX out_cons, out_prod, out_error;
   46 
   47     uint8_t pad2[52];
   48 
   49     RING_IDX ring_order;
   50     grant_ref_t ref[];
   51 };
   52 DEFINE_XEN_FLEX_RING(pvcalls);
   53 
   54 #define PVCALLS_SOCKET         0
   55 #define PVCALLS_CONNECT        1
   56 #define PVCALLS_RELEASE        2
   57 #define PVCALLS_BIND           3
   58 #define PVCALLS_LISTEN         4
   59 #define PVCALLS_ACCEPT         5
   60 #define PVCALLS_POLL           6
   61 
   62 struct xen_pvcalls_request {
   63     uint32_t req_id; /* private to guest, echoed in response */
   64     uint32_t cmd;    /* command to execute */
   65     union {
   66         struct xen_pvcalls_socket {
   67             uint64_t id;
   68             uint32_t domain;
   69             uint32_t type;
   70             uint32_t protocol;
   71             uint8_t pad[4];
   72         } socket;
   73         struct xen_pvcalls_connect {
   74             uint64_t id;
   75             uint8_t addr[28];
   76             uint32_t len;
   77             uint32_t flags;
   78             grant_ref_t ref;
   79             uint32_t evtchn;
   80             uint8_t pad[4];
   81         } connect;
   82         struct xen_pvcalls_release {
   83             uint64_t id;
   84             uint8_t reuse;
   85             uint8_t pad[7];
   86         } release;
   87         struct xen_pvcalls_bind {
   88             uint64_t id;
   89             uint8_t addr[28];
   90             uint32_t len;
   91         } bind;
   92         struct xen_pvcalls_listen {
   93             uint64_t id;
   94             uint32_t backlog;
   95             uint8_t pad[4];
   96         } listen;
   97         struct xen_pvcalls_accept {
   98             uint64_t id;
   99             uint64_t id_new;
  100             grant_ref_t ref;
  101             uint32_t evtchn;
  102         } accept;
  103         struct xen_pvcalls_poll {
  104             uint64_t id;
  105         } poll;
  106         /* dummy member to force sizeof(struct xen_pvcalls_request)
  107          * to match across archs */
  108         struct xen_pvcalls_dummy {
  109             uint8_t dummy[56];
  110         } dummy;
  111     } u;
  112 };
  113 
  114 struct xen_pvcalls_response {
  115     uint32_t req_id;
  116     uint32_t cmd;
  117     int32_t ret;
  118     uint32_t pad;
  119     union {
  120         struct _xen_pvcalls_socket {
  121             uint64_t id;
  122         } socket;
  123         struct _xen_pvcalls_connect {
  124             uint64_t id;
  125         } connect;
  126         struct _xen_pvcalls_release {
  127             uint64_t id;
  128         } release;
  129         struct _xen_pvcalls_bind {
  130             uint64_t id;
  131         } bind;
  132         struct _xen_pvcalls_listen {
  133             uint64_t id;
  134         } listen;
  135         struct _xen_pvcalls_accept {
  136             uint64_t id;
  137         } accept;
  138         struct _xen_pvcalls_poll {
  139             uint64_t id;
  140         } poll;
  141         struct _xen_pvcalls_dummy {
  142             uint8_t dummy[8];
  143         } dummy;
  144     } u;
  145 };
  146 
  147 DEFINE_RING_TYPES(xen_pvcalls, struct xen_pvcalls_request,
  148                   struct xen_pvcalls_response);
  149 
  150 #endif
  151 
  152 /*
  153  * Local variables:
  154  * mode: C
  155  * c-file-style: "BSD"
  156  * c-basic-offset: 4
  157  * tab-width: 4
  158  * indent-tabs-mode: nil
  159  * End:
  160  */

Cache object: 47eed47017726917ce939763a546e97a


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.