Files
acrn-hypervisor/devicemodel/include/vhost.h
Geoffroy Van Cutsem 8b16be9185 Remove "All rights reserved" string headers
Many of the license and Intel copyright headers include the "All rights
reserved" string. It is not relevant in the context of the BSD-3-Clause
license that the code is released under. This patch removes those strings
throughout the code (hypervisor, devicemodel and misc).

Tracked-On: #7254
Signed-off-by: Geoffroy Van Cutsem <geoffroy.vancutsem@intel.com>
2022-04-06 13:21:02 +08:00

151 lines
3.0 KiB
C

/*
* Copyright (C) 2018 Intel Corporation.
*
* SPDX-License-Identifier: BSD-3-Clause
*
*/
/**
* @file vhost.h
*
* @brief VHOST APIs for ACRN Project
*/
#ifndef __VHOST_H__
#define __VHOST_H__
#include "virtio.h"
/**
* @brief vhost APIs
*
* @addtogroup acrn_virtio
* @{
*/
struct vhost_vq {
int kick_fd; /**< fd of kick eventfd */
int call_fd; /**< fd of call eventfd */
int idx; /**< index of this vq in vhost dev */
struct vhost_dev *dev; /**< pointer to vhost_dev */
};
struct vhost_dev {
/**
* backpointer to virtio_base
*/
struct virtio_base *base;
/**
* pointer to vhost_vq array
*/
struct vhost_vq *vqs;
/**
* number of virtqueues
*/
int nvqs;
/**
* vhost chardev fd
*/
int fd;
/**
* first vq's index in virtio_vq_info
*/
int vq_idx;
/**
* supported virtio defined features
*/
uint64_t vhost_features;
/**
* vhost self-defined internal features bits used for
* communicate between vhost user-space and kernel-space modules
*/
uint64_t vhost_ext_features;
/**
* vq busyloop timeout in us
*/
uint32_t busyloop_timeout;
/**
* whether vhost is started
*/
bool started;
};
/**
* @brief vhost_dev initialization.
*
* This interface is called to initialize the vhost_dev. It must be called
* before the actual feature negotiation with the guest OS starts.
*
* @param vdev Pointer to struct vhost_dev.
* @param base Pointer to struct virtio_base.
* @param fd fd of the vhost chardev.
* @param vq_idx The first virtqueue which would be used by this vhost dev.
* @param vhost_features Subset of vhost features which would be enabled.
* @param vhost_ext_features Specific vhost internal features to be enabled.
* @param busyloop_timeout Busy loop timeout in us.
*
* @return 0 on success and -1 on failure.
*/
int vhost_dev_init(struct vhost_dev *vdev, struct virtio_base *base, int fd,
int vq_idx, uint64_t vhost_features,
uint64_t vhost_ext_features, uint32_t busyloop_timeout);
/**
* @brief vhost_dev cleanup.
*
* This interface is called to cleanup the vhost_dev.
*
* @param vdev Pointer to struct vhost_dev.
*
* @return 0 on success and -1 on failure.
*/
int vhost_dev_deinit(struct vhost_dev *vdev);
/**
* @brief start vhost data plane.
*
* This interface is called to start the data plane in vhost.
*
* @param vdev Pointer to struct vhost_dev.
*
* @return 0 on success and -1 on failure.
*/
int vhost_dev_start(struct vhost_dev *vdev);
/**
* @brief stop vhost data plane.
*
* This interface is called to stop the data plane in vhost.
*
* @param vdev Pointer to struct vhost_dev.
*
* @return 0 on success and -1 on failure.
*/
int vhost_dev_stop(struct vhost_dev *vdev);
/**
* @brief set backend fd of vhost net.
*
* This interface is called to set the backend fd (for example tap fd)
* to vhost.
*
* @param vdev Pointer to struct vhost_dev.
* @param backend_fd fd of backend (for example tap fd).
*
* @return 0 on success and -1 on failure.
*/
int vhost_net_set_backend(struct vhost_dev *vdev, int backend_fd);
/**
* @}
*/
#endif