1 /* 2 * Copyright (C) 2018-2022 Intel Corporation. 3 * 4 * SPDX-License-Identifier: BSD-3-Clause 5 * 6 */ 7 8 /** 9 * @file vhost_vsock.h 10 */ 11 12 #ifndef __VHOST_VSOCK_H__ 13 #define __VHOST_VSOCK_H__ 14 15 #include "virtio.h" 16 #include "vhost.h" 17 18 #define VHOST_VSOCK_RXQ 0 19 #define VHOST_VSOCK_TXQ 1 20 #define VHOST_VSOCK_CTLQ 2 /* NB: not yet supported */ 21 #define VHOST_VSOCK_MAXQ 3 22 23 #define VHOST_VSOCK_QUEUE_SIZE 128 24 #define VHOST_F_LOG_ALL 26 25 26 #define VHOST_VSOCK_FEATURES \ 27 (1ULL << VIRTIO_F_NOTIFY_ON_EMPTY) | (1ULL << VIRTIO_RING_F_INDIRECT_DESC) | \ 28 (1ULL << VIRTIO_RING_F_EVENT_IDX) | (1ULL << VHOST_F_LOG_ALL) | \ 29 (1ULL << VIRTIO_F_ANY_LAYOUT) | (1ULL << VIRTIO_F_VERSION_1) 30 31 #define U32_MAX ((uint32_t)~0U) 32 #define VMADDR_CID_HOST 2 33 34 struct virtio_vsock_config { 35 uint64_t guest_cid; 36 }__attribute__((packed)); 37 38 struct virtio_vsock { 39 struct virtio_base base; 40 pthread_mutex_t mtx; 41 struct virtio_vq_info queues[VHOST_VSOCK_MAXQ]; 42 struct virtio_vsock_config config; 43 struct vhost_vsock *vhost_vsock; 44 uint64_t features; 45 }; 46 47 struct vhost_vsock { 48 struct vhost_dev vdev; 49 struct vhost_vq vqs[VHOST_VSOCK_MAXQ]; 50 int vhost_fd; 51 bool vhost_started; 52 }; 53 #endif 54