PV protocol is the protocol used by all PV drivers. Just to name a few users: netfront/netback, blkfront/blkback, xenconsole etc.
Two fundamental elements of PV protocol is:
- Consensual ring(s) shared between frontend driver and backend driver.
- Event channel used to do notification.
The ring is nothing but a piece of memory shared between frontend driver and backend drivers. The ring size is counted in slots. A slot is a union of request and response.
Usually one event channel is used to do notification.
Here is a picture demonstrating the PV protocol.
In this picture we assume frontend produces requests and consumes responses, while backend produces responses and consumes requests. The slots are not explicitly drawn on the picture.