1 /* 2 * vhost-backend 3 * 4 * Copyright (c) 2013 Virtual Open Systems Sarl. 5 * 6 * This work is licensed under the terms of the GNU GPL, version 2 or later. 7 * See the COPYING file in the top-level directory. 8 * 9 */ 10 11 #ifndef VHOST_BACKEND_H_ 12 #define VHOST_BACKEND_H_ 13 14 typedef enum VhostBackendType { 15 VHOST_BACKEND_TYPE_NONE = 0, 16 VHOST_BACKEND_TYPE_KERNEL = 1, 17 VHOST_BACKEND_TYPE_USER = 2, 18 VHOST_BACKEND_TYPE_MAX = 3, 19 } VhostBackendType; 20 21 struct vhost_dev; 22 23 typedef int (*vhost_call)(struct vhost_dev *dev, unsigned long int request, 24 void *arg); 25 typedef int (*vhost_backend_init)(struct vhost_dev *dev, void *opaque); 26 typedef int (*vhost_backend_cleanup)(struct vhost_dev *dev); 27 typedef int (*vhost_backend_get_vq_index)(struct vhost_dev *dev, int idx); 28 typedef int (*vhost_backend_set_vring_enable)(struct vhost_dev *dev, int enable); 29 30 typedef struct VhostOps { 31 VhostBackendType backend_type; 32 vhost_call vhost_call; 33 vhost_backend_init vhost_backend_init; 34 vhost_backend_cleanup vhost_backend_cleanup; 35 vhost_backend_get_vq_index vhost_backend_get_vq_index; 36 vhost_backend_set_vring_enable vhost_backend_set_vring_enable; 37 } VhostOps; 38 39 extern const VhostOps user_ops; 40 41 int vhost_set_backend_type(struct vhost_dev *dev, 42 VhostBackendType backend_type); 43 44 #endif /* VHOST_BACKEND_H_ */ 45