1f24bb728SMarc-André Lureau /*
2f24bb728SMarc-André Lureau  * QEMU vhost-user backend
3f24bb728SMarc-André Lureau  *
4f24bb728SMarc-André Lureau  * Copyright (C) 2018 Red Hat Inc
5f24bb728SMarc-André Lureau  *
6f24bb728SMarc-André Lureau  * Authors:
7f24bb728SMarc-André Lureau  *  Marc-André Lureau <marcandre.lureau@redhat.com>
8f24bb728SMarc-André Lureau  *
9f24bb728SMarc-André Lureau  * This work is licensed under the terms of the GNU GPL, version 2 or later.
10f24bb728SMarc-André Lureau  * See the COPYING file in the top-level directory.
11f24bb728SMarc-André Lureau  */
12f24bb728SMarc-André Lureau #ifndef QEMU_VHOST_USER_BACKEND_H
13f24bb728SMarc-André Lureau #define QEMU_VHOST_USER_BACKEND_H
14f24bb728SMarc-André Lureau 
15f24bb728SMarc-André Lureau #include "qom/object.h"
16f24bb728SMarc-André Lureau #include "exec/memory.h"
17f24bb728SMarc-André Lureau #include "qemu/option.h"
18f24bb728SMarc-André Lureau #include "qemu/bitmap.h"
19f24bb728SMarc-André Lureau #include "hw/virtio/vhost.h"
20f24bb728SMarc-André Lureau #include "hw/virtio/vhost-user.h"
21f24bb728SMarc-André Lureau #include "chardev/char-fe.h"
22f24bb728SMarc-André Lureau #include "io/channel.h"
23f24bb728SMarc-André Lureau 
24f24bb728SMarc-André Lureau #define TYPE_VHOST_USER_BACKEND "vhost-user-backend"
25*30b5707cSEduardo Habkost OBJECT_DECLARE_SIMPLE_TYPE(VhostUserBackend,
26c734cd40SEduardo Habkost                            VHOST_USER_BACKEND)
27f24bb728SMarc-André Lureau 
28f24bb728SMarc-André Lureau 
29f24bb728SMarc-André Lureau 
30f24bb728SMarc-André Lureau struct VhostUserBackend {
31f24bb728SMarc-André Lureau     /* private */
32f24bb728SMarc-André Lureau     Object parent;
33f24bb728SMarc-André Lureau 
34f24bb728SMarc-André Lureau     char *chr_name;
35f24bb728SMarc-André Lureau     CharBackend chr;
36f24bb728SMarc-André Lureau     VhostUserState vhost_user;
37f24bb728SMarc-André Lureau     struct vhost_dev dev;
38f24bb728SMarc-André Lureau     VirtIODevice *vdev;
39f24bb728SMarc-André Lureau     bool started;
40f24bb728SMarc-André Lureau     bool completed;
41f24bb728SMarc-André Lureau };
42f24bb728SMarc-André Lureau 
43f24bb728SMarc-André Lureau int vhost_user_backend_dev_init(VhostUserBackend *b, VirtIODevice *vdev,
44f24bb728SMarc-André Lureau                                 unsigned nvqs, Error **errp);
45f24bb728SMarc-André Lureau void vhost_user_backend_start(VhostUserBackend *b);
46f24bb728SMarc-André Lureau void vhost_user_backend_stop(VhostUserBackend *b);
47f24bb728SMarc-André Lureau 
48f24bb728SMarc-André Lureau #endif
49