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