1*62759896SAlex Bennée /* 2*62759896SAlex Bennée * Vhost-user generic virtio device 3*62759896SAlex Bennée * 4*62759896SAlex Bennée * Copyright (c) 2023 Linaro Ltd 5*62759896SAlex Bennée * 6*62759896SAlex Bennée * SPDX-License-Identifier: GPL-2.0-or-later 7*62759896SAlex Bennée */ 8*62759896SAlex Bennée 9*62759896SAlex Bennée #ifndef QEMU_VHOST_USER_BASE_H 10*62759896SAlex Bennée #define QEMU_VHOST_USER_BASE_H 11*62759896SAlex Bennée 12*62759896SAlex Bennée #include "hw/virtio/vhost.h" 13*62759896SAlex Bennée #include "hw/virtio/vhost-user.h" 14*62759896SAlex Bennée 15*62759896SAlex Bennée #define TYPE_VHOST_USER_BASE "vhost-user-base" 16*62759896SAlex Bennée 17*62759896SAlex Bennée OBJECT_DECLARE_TYPE(VHostUserBase, VHostUserBaseClass, VHOST_USER_BASE) 18*62759896SAlex Bennée 19*62759896SAlex Bennée struct VHostUserBase { 20*62759896SAlex Bennée VirtIODevice parent_obj; 21*62759896SAlex Bennée 22*62759896SAlex Bennée /* Properties */ 23*62759896SAlex Bennée CharBackend chardev; 24*62759896SAlex Bennée uint16_t virtio_id; 25*62759896SAlex Bennée uint32_t num_vqs; 26*62759896SAlex Bennée uint32_t vq_size; /* can't exceed VIRTIO_QUEUE_MAX */ 27*62759896SAlex Bennée uint32_t config_size; 28*62759896SAlex Bennée /* State tracking */ 29*62759896SAlex Bennée VhostUserState vhost_user; 30*62759896SAlex Bennée struct vhost_virtqueue *vhost_vq; 31*62759896SAlex Bennée struct vhost_dev vhost_dev; 32*62759896SAlex Bennée GPtrArray *vqs; 33*62759896SAlex Bennée bool connected; 34*62759896SAlex Bennée }; 35*62759896SAlex Bennée 36*62759896SAlex Bennée /* 37*62759896SAlex Bennée * Needed so we can use the base realize after specialisation 38*62759896SAlex Bennée * tweaks 39*62759896SAlex Bennée */ 40*62759896SAlex Bennée struct VHostUserBaseClass { 41*62759896SAlex Bennée VirtioDeviceClass parent_class; 42*62759896SAlex Bennée 43*62759896SAlex Bennée DeviceRealize parent_realize; 44*62759896SAlex Bennée }; 45*62759896SAlex Bennée 46*62759896SAlex Bennée 47*62759896SAlex Bennée #define TYPE_VHOST_USER_DEVICE "vhost-user-device" 48*62759896SAlex Bennée 49*62759896SAlex Bennée #endif /* QEMU_VHOST_USER_BASE_H */ 50