| PVBUS(4) | Device Drivers Manual | PVBUS(4) |
pvbus —
paravirtual device tree root
pvbus0 at mainbus0
#include <sys/types.h>
#include <sys/ioctl.h>
#include <dev/pv/pvvar.h>
pvbus is used on virtual machines that are
running on hypervisors. It provides a pseudo-bus for all paravirtual devices
that do not attach to a well-known bus like
pci(4). The
pvbus driver is responsible for detecting the
hypervisor interface, checking the capabilities, attaching the paravirtual
devices, and providing access to supported information stores.
Note that a hypervisor can attempt to emulate other hypervisors, so multiple hypervisor interfaces may be available on the same host.
pvbus supports
ioctl(2) commands to exchange
information with the hypervisor interface, as implemented in the
hostctl(8) program. Each
detected hypervisor interface is available as a character special device
file, /dev/pvbus0,
/dev/pvbus1, etc. All available commands use the
same pvbus_req structure:
struct pvbus_req {
size_t pvr_keylen;
char *pvr_key;
size_t pvr_valuelen;
char *pvr_value;
};
The caller is responsible for attaching character buffers to the pvr_key and pvr_value fields and to set their length in pvr_keylen and pvr_valuelen accordingly. All keys and values are nul-terminated strings.
The following ioctl(2) commands are available:
PVBUSIOC_KVREADERANGE.PVBUSIOC_KVTYPEPVBUSIOC_KVWRITEpvbus device unit u
file.The pvbus pseudo-bus first appeared in
OpenBSD 5.8.
The pvbus pseudo-bus was written by
Reyk Floeter
<reyk@openbsd.org>.
| January 7, 2023 | openbsd |