xref: /qemu/include/hw/virtio/vhost-vsock-common.h (revision c6136ec0c6fea0db638de08720018fd4bc777787)
1*c6136ec0SStefano Garzarella /*
2*c6136ec0SStefano Garzarella  * Parent class for vhost-vsock devices
3*c6136ec0SStefano Garzarella  *
4*c6136ec0SStefano Garzarella  * Copyright 2015-2020 Red Hat, Inc.
5*c6136ec0SStefano Garzarella  *
6*c6136ec0SStefano Garzarella  * This work is licensed under the terms of the GNU GPL, version 2 or
7*c6136ec0SStefano Garzarella  * (at your option) any later version.  See the COPYING file in the
8*c6136ec0SStefano Garzarella  * top-level directory.
9*c6136ec0SStefano Garzarella  */
10*c6136ec0SStefano Garzarella 
11*c6136ec0SStefano Garzarella #ifndef _QEMU_VHOST_VSOCK_COMMON_H
12*c6136ec0SStefano Garzarella #define _QEMU_VHOST_VSOCK_COMMON_H
13*c6136ec0SStefano Garzarella 
14*c6136ec0SStefano Garzarella #include "hw/virtio/virtio.h"
15*c6136ec0SStefano Garzarella #include "hw/virtio/vhost.h"
16*c6136ec0SStefano Garzarella 
17*c6136ec0SStefano Garzarella #define TYPE_VHOST_VSOCK_COMMON "vhost-vsock-common"
18*c6136ec0SStefano Garzarella #define VHOST_VSOCK_COMMON(obj) \
19*c6136ec0SStefano Garzarella         OBJECT_CHECK(VHostVSockCommon, (obj), TYPE_VHOST_VSOCK_COMMON)
20*c6136ec0SStefano Garzarella 
21*c6136ec0SStefano Garzarella enum {
22*c6136ec0SStefano Garzarella     VHOST_VSOCK_SAVEVM_VERSION = 0,
23*c6136ec0SStefano Garzarella 
24*c6136ec0SStefano Garzarella     VHOST_VSOCK_QUEUE_SIZE = 128,
25*c6136ec0SStefano Garzarella };
26*c6136ec0SStefano Garzarella 
27*c6136ec0SStefano Garzarella typedef struct {
28*c6136ec0SStefano Garzarella     VirtIODevice parent;
29*c6136ec0SStefano Garzarella 
30*c6136ec0SStefano Garzarella     struct vhost_virtqueue vhost_vqs[2];
31*c6136ec0SStefano Garzarella     struct vhost_dev vhost_dev;
32*c6136ec0SStefano Garzarella 
33*c6136ec0SStefano Garzarella     VirtQueue *event_vq;
34*c6136ec0SStefano Garzarella     VirtQueue *recv_vq;
35*c6136ec0SStefano Garzarella     VirtQueue *trans_vq;
36*c6136ec0SStefano Garzarella 
37*c6136ec0SStefano Garzarella     QEMUTimer *post_load_timer;
38*c6136ec0SStefano Garzarella } VHostVSockCommon;
39*c6136ec0SStefano Garzarella 
40*c6136ec0SStefano Garzarella int vhost_vsock_common_start(VirtIODevice *vdev);
41*c6136ec0SStefano Garzarella void vhost_vsock_common_stop(VirtIODevice *vdev);
42*c6136ec0SStefano Garzarella int vhost_vsock_common_pre_save(void *opaque);
43*c6136ec0SStefano Garzarella int vhost_vsock_common_post_load(void *opaque, int version_id);
44*c6136ec0SStefano Garzarella void vhost_vsock_common_realize(VirtIODevice *vdev, const char *name);
45*c6136ec0SStefano Garzarella void vhost_vsock_common_unrealize(VirtIODevice *vdev);
46*c6136ec0SStefano Garzarella 
47*c6136ec0SStefano Garzarella #endif /* _QEMU_VHOST_VSOCK_COMMON_H */
48