cregit-Linux how code gets into the kernel

Release 4.17 include/xen/interface/io/pvcalls.h

#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

Overall Contributors

PersonTokensPropCommitsCommitProp
Stefano Stabellini347100.00%1100.00%
Total347100.00%1100.00%
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.
Created with cregit.