/*
 * Vhost-user generic virtio device
 *
 * Copyright (c) 2023 Linaro Ltd
 *
 * SPDX-License-Identifier: GPL-2.0-or-later
 */

#ifndef QEMU_VHOST_USER_BASE_H
#define QEMU_VHOST_USER_BASE_H

#include "hw/virtio/vhost.h"
#include "hw/virtio/vhost-user.h"

#define TYPE_VHOST_USER_BASE "vhost-user-base"

OBJECT_DECLARE_TYPE(VHostUserBase, VHostUserBaseClass, VHOST_USER_BASE)

struct VHostUserBase {
    VirtIODevice parent_obj;

    /* Properties */
    CharBackend chardev;
    uint16_t virtio_id;
    uint32_t num_vqs;
    uint32_t vq_size; /* can't exceed VIRTIO_QUEUE_MAX */
    uint32_t config_size;
    /* State tracking */
    VhostUserState vhost_user;
    struct vhost_virtqueue *vhost_vq;
    struct vhost_dev vhost_dev;
    GPtrArray *vqs;
    bool connected;
};

/*
 * Needed so we can use the base realize after specialisation
 * tweaks
 */
struct VHostUserBaseClass {
    VirtioDeviceClass parent_class;

    DeviceRealize parent_realize;
};


#define TYPE_VHOST_USER_DEVICE "vhost-user-device"

#endif /* QEMU_VHOST_USER_BASE_H */
