xref: /aosp_15_r20/external/crosvm/third_party/vmm_vhost/README.md (revision bb4ee6a4ae7042d18b07a98463b9c8b875e44b39)
1*bb4ee6a4SAndroid Build Coastguard Worker# vHost
2*bb4ee6a4SAndroid Build Coastguard Worker
3*bb4ee6a4SAndroid Build Coastguard WorkerA pure rust library for vhost-user. This is a fork of
4*bb4ee6a4SAndroid Build Coastguard Worker[rust-vmm/vhost](https://github.com/rust-vmm/vhost).
5*bb4ee6a4SAndroid Build Coastguard Worker
6*bb4ee6a4SAndroid Build Coastguard Worker![vhost Architecture](./docs/vhost_architecture.png)
7*bb4ee6a4SAndroid Build Coastguard Worker
8*bb4ee6a4SAndroid Build Coastguard WorkerThe
9*bb4ee6a4SAndroid Build Coastguard Worker[vhost-user protocol](https://qemu.readthedocs.io/en/latest/interop/vhost-user.html#communication)
10*bb4ee6a4SAndroid Build Coastguard Workeraims to implement vhost backend drivers in userspace, which complements the ioctl interface used to
11*bb4ee6a4SAndroid Build Coastguard Workercontrol the vhost implementation in the Linux kernel. It implements the control plane needed to
12*bb4ee6a4SAndroid Build Coastguard Workerestablish virtqueue sharing with a user space process on the same host. It uses communication over a
13*bb4ee6a4SAndroid Build Coastguard WorkerUnix domain socket to share file descriptors in the ancillary data of the message.
14*bb4ee6a4SAndroid Build Coastguard Worker
15*bb4ee6a4SAndroid Build Coastguard WorkerThe protocol defines two sides of the communication, frontend and backend. Frontend is the
16*bb4ee6a4SAndroid Build Coastguard Workerapplication that shares its virtqueues, backend is the consumer of the virtqueues. Frontend and
17*bb4ee6a4SAndroid Build Coastguard Workerbackend can be either a client (i.e. connecting) or server (listening) in the socket communication.
18