mirror of https://gitee.com/openkylin/qemu.git
vhost-user: add vhost_user_requires_shm_log()
Check if the backend has VHOST_USER_PROTOCOL_F_LOG_SHMFD feature and require a shared log. Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com> Reviewed-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com> Tested-by: Thibaut Collet <thibaut.collet@6wind.com>
This commit is contained in:
parent
c2bea314f6
commit
1be0ac2109
|
@ -25,9 +25,10 @@
|
|||
|
||||
#define VHOST_MEMORY_MAX_NREGIONS 8
|
||||
#define VHOST_USER_F_PROTOCOL_FEATURES 30
|
||||
#define VHOST_USER_PROTOCOL_FEATURE_MASK 0x1ULL
|
||||
|
||||
#define VHOST_USER_PROTOCOL_F_MQ 0
|
||||
#define VHOST_USER_PROTOCOL_FEATURE_MASK 0x3ULL
|
||||
#define VHOST_USER_PROTOCOL_F_MQ 0
|
||||
#define VHOST_USER_PROTOCOL_F_LOG_SHMFD 1
|
||||
|
||||
typedef enum VhostUserRequest {
|
||||
VHOST_USER_NONE = 0,
|
||||
|
@ -458,6 +459,14 @@ static int vhost_user_memslots_limit(struct vhost_dev *dev)
|
|||
return VHOST_MEMORY_MAX_NREGIONS;
|
||||
}
|
||||
|
||||
static bool vhost_user_requires_shm_log(struct vhost_dev *dev)
|
||||
{
|
||||
assert(dev->vhost_ops->backend_type == VHOST_BACKEND_TYPE_USER);
|
||||
|
||||
return virtio_has_feature(dev->protocol_features,
|
||||
VHOST_USER_PROTOCOL_F_LOG_SHMFD);
|
||||
}
|
||||
|
||||
const VhostOps user_ops = {
|
||||
.backend_type = VHOST_BACKEND_TYPE_USER,
|
||||
.vhost_call = vhost_user_call,
|
||||
|
@ -467,4 +476,5 @@ const VhostOps user_ops = {
|
|||
.vhost_backend_set_vring_enable = vhost_user_set_vring_enable,
|
||||
.vhost_backend_memslots_limit = vhost_user_memslots_limit,
|
||||
.vhost_set_log_base = vhost_set_log_base,
|
||||
.vhost_requires_shm_log = vhost_user_requires_shm_log,
|
||||
};
|
||||
|
|
|
@ -11,6 +11,8 @@
|
|||
#ifndef VHOST_BACKEND_H_
|
||||
#define VHOST_BACKEND_H_
|
||||
|
||||
#include <stdbool.h>
|
||||
|
||||
typedef enum VhostBackendType {
|
||||
VHOST_BACKEND_TYPE_NONE = 0,
|
||||
VHOST_BACKEND_TYPE_KERNEL = 1,
|
||||
|
@ -29,6 +31,7 @@ typedef int (*vhost_backend_set_vring_enable)(struct vhost_dev *dev, int enable)
|
|||
typedef int (*vhost_backend_memslots_limit)(struct vhost_dev *dev);
|
||||
|
||||
typedef int (*vhost_set_log_base_op)(struct vhost_dev *dev, uint64_t base);
|
||||
typedef bool (*vhost_requires_shm_log_op)(struct vhost_dev *dev);
|
||||
|
||||
typedef struct VhostOps {
|
||||
VhostBackendType backend_type;
|
||||
|
@ -39,6 +42,7 @@ typedef struct VhostOps {
|
|||
vhost_backend_set_vring_enable vhost_backend_set_vring_enable;
|
||||
vhost_backend_memslots_limit vhost_backend_memslots_limit;
|
||||
vhost_set_log_base_op vhost_set_log_base;
|
||||
vhost_requires_shm_log_op vhost_requires_shm_log;
|
||||
} VhostOps;
|
||||
|
||||
extern const VhostOps user_ops;
|
||||
|
|
Loading…
Reference in New Issue