acrn-hypervisor/devicemodel/include/vhost_vsock.h

54 lines
1.2 KiB
C

/*
* Copyright (C) 2018-2022 Intel Corporation.
*
* SPDX-License-Identifier: BSD-3-Clause
*
*/
/**
* @file vhost_vsock.h
*/
#ifndef __VHOST_VSOCK_H__
#define __VHOST_VSOCK_H__
#include "virtio.h"
#include "vhost.h"
#define VHOST_VSOCK_RXQ 0
#define VHOST_VSOCK_TXQ 1
#define VHOST_VSOCK_CTLQ 2 /* NB: not yet supported */
#define VHOST_VSOCK_MAXQ 3
#define VHOST_VSOCK_QUEUE_SIZE 128
#define VHOST_F_LOG_ALL 26
#define VHOST_VSOCK_FEATURES \
(1ULL << VIRTIO_F_NOTIFY_ON_EMPTY) | (1ULL << VIRTIO_RING_F_INDIRECT_DESC) | \
(1ULL << VIRTIO_RING_F_EVENT_IDX) | (1ULL << VHOST_F_LOG_ALL) | \
(1ULL << VIRTIO_F_ANY_LAYOUT) | (1ULL << VIRTIO_F_VERSION_1)
#define U32_MAX ((uint32_t)~0U)
#define VMADDR_CID_HOST 2
struct virtio_vsock_config {
uint64_t guest_cid;
}__attribute__((packed));
struct virtio_vsock {
struct virtio_base base;
pthread_mutex_t mtx;
struct virtio_vq_info queues[VHOST_VSOCK_MAXQ];
struct virtio_vsock_config config;
struct vhost_vsock *vhost_vsock;
uint64_t features;
};
struct vhost_vsock {
struct vhost_dev vdev;
struct vhost_vq vqs[VHOST_VSOCK_MAXQ];
int vhost_fd;
bool vhost_started;
};
#endif