linux/drivers/xen/pvcalls-back.c

// SPDX-License-Identifier: GPL-2.0-or-later
/*
 * (c) 2017 Stefano Stabellini <[email protected]>
 */

#include <linux/inet.h>
#include <linux/kthread.h>
#include <linux/list.h>
#include <linux/radix-tree.h>
#include <linux/module.h>
#include <linux/semaphore.h>
#include <linux/wait.h>
#include <net/sock.h>
#include <net/inet_common.h>
#include <net/inet_connection_sock.h>
#include <net/request_sock.h>
#include <trace/events/sock.h>

#include <xen/events.h>
#include <xen/grant_table.h>
#include <xen/xen.h>
#include <xen/xenbus.h>
#include <xen/interface/io/pvcalls.h>

#define PVCALLS_VERSIONS
#define MAX_RING_ORDER

static struct pvcalls_back_global {} pvcalls_back_global;

/*
 * Per-frontend data structure. It contains pointers to the command
 * ring, its event channel, a list of active sockets and a tree of
 * passive sockets.
 */
struct pvcalls_fedata {};

struct pvcalls_ioworker {};

struct sock_mapping {};

struct sockpass_mapping {};

static irqreturn_t pvcalls_back_conn_event(int irq, void *sock_map);
static int pvcalls_back_release_active(struct xenbus_device *dev,
				       struct pvcalls_fedata *fedata,
				       struct sock_mapping *map);

static bool pvcalls_conn_back_read(void *opaque)
{}

static bool pvcalls_conn_back_write(struct sock_mapping *map)
{}

static void pvcalls_back_ioworker(struct work_struct *work)
{}

static int pvcalls_back_socket(struct xenbus_device *dev,
		struct xen_pvcalls_request *req)
{}

static void pvcalls_sk_state_change(struct sock *sock)
{}

static void pvcalls_sk_data_ready(struct sock *sock)
{}

static struct sock_mapping *pvcalls_new_active_socket(
		struct pvcalls_fedata *fedata,
		uint64_t id,
		grant_ref_t ref,
		evtchn_port_t evtchn,
		struct socket *sock)
{}

static int pvcalls_back_connect(struct xenbus_device *dev,
				struct xen_pvcalls_request *req)
{}

static int pvcalls_back_release_active(struct xenbus_device *dev,
				       struct pvcalls_fedata *fedata,
				       struct sock_mapping *map)
{}

static int pvcalls_back_release_passive(struct xenbus_device *dev,
					struct pvcalls_fedata *fedata,
					struct sockpass_mapping *mappass)
{}

static int pvcalls_back_release(struct xenbus_device *dev,
				struct xen_pvcalls_request *req)
{}

static void __pvcalls_back_accept(struct work_struct *work)
{}

static void pvcalls_pass_sk_data_ready(struct sock *sock)
{}

static int pvcalls_back_bind(struct xenbus_device *dev,
			     struct xen_pvcalls_request *req)
{}

static int pvcalls_back_listen(struct xenbus_device *dev,
			       struct xen_pvcalls_request *req)
{}

static int pvcalls_back_accept(struct xenbus_device *dev,
			       struct xen_pvcalls_request *req)
{}

static int pvcalls_back_poll(struct xenbus_device *dev,
			     struct xen_pvcalls_request *req)
{}

static int pvcalls_back_handle_cmd(struct xenbus_device *dev,
				   struct xen_pvcalls_request *req)
{}

static void pvcalls_back_work(struct pvcalls_fedata *fedata)
{}

static irqreturn_t pvcalls_back_event(int irq, void *dev_id)
{}

static irqreturn_t pvcalls_back_conn_event(int irq, void *sock_map)
{}

static int backend_connect(struct xenbus_device *dev)
{}

static int backend_disconnect(struct xenbus_device *dev)
{}

static int pvcalls_back_probe(struct xenbus_device *dev,
			      const struct xenbus_device_id *id)
{}

static void set_backend_state(struct xenbus_device *dev,
			      enum xenbus_state state)
{}

static void pvcalls_back_changed(struct xenbus_device *dev,
				 enum xenbus_state frontend_state)
{}

static void pvcalls_back_remove(struct xenbus_device *dev)
{}

static int pvcalls_back_uevent(const struct xenbus_device *xdev,
			       struct kobj_uevent_env *env)
{}

static const struct xenbus_device_id pvcalls_back_ids[] =;

static struct xenbus_driver pvcalls_back_driver =;

static int __init pvcalls_back_init(void)
{}
module_init();

static void __exit pvcalls_back_fin(void)
{}

module_exit(pvcalls_back_fin);

MODULE_DESCRIPTION();
MODULE_AUTHOR();
MODULE_LICENSE();