crosvm/third_party/vmm_vhost
David Stevens f436e27060 vmm_vhost: add shared memory region support
Add support for shared memory regions to vhost-user. This is adding
support for a front-end message to query for necessary shared memory
regions plus back-end message to support mapping/unmapping files from
the shared memory region.

go/vvu-shared-memory

BUG=b:201745804
TEST=compiles

Change-Id: I35c5d260ee09175b68f6778b81883e0070ee0265
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/3716344
Reviewed-by: Keiichi Watanabe <keiichiw@chromium.org>
Commit-Queue: David Stevens <stevensd@chromium.org>
Reviewed-by: Alexandre Courbot <acourbot@chromium.org>
Tested-by: kokoro <noreply+kokoro@google.com>
2022-07-12 01:13:14 +00:00
..
.buildkite
.cargo
.github
docs vmm_vhost: Delete vhost-kern and vhost-vsock 2021-12-01 09:45:44 +00:00
src vmm_vhost: add shared memory region support 2022-07-12 01:13:14 +00:00
.gitignore
.gitmodules
Cargo.toml Enable vmm_vhost windows tests 2022-03-29 20:29:54 +00:00
CODEOWNERS
LICENSE
LICENSE-BSD-3-Clause
LICENSE-BSD-Chromium
README.md vmm_vhost: Delete vhost-kern and vhost-vsock 2021-12-01 09:45:44 +00:00

vHost

A pure rust library for vhost-user. This is a fork of rust-vmm/vhost.

vhost Architecture

The vhost-user protocol aims to implement vhost backend drivers in userspace, which complements the ioctl interface used to control the vhost implementation in the Linux kernel. It implements the control plane needed to establish virtqueue sharing with a user space process on the same host. It uses communication over a Unix domain socket to share file descriptors in the ancillary data of the message.

The protocol defines two sides of the communication, master and slave. Master is the application that shares its virtqueues, slave is the consumer of the virtqueues. Master and slave can be either a client (i.e. connecting) or server (listening) in the socket communication.