dataplane: use linux-headers/ for virtio includes
The hw/dataplane/vring.c code includes linux/virtio_ring.h. Ensure thatwe use linux-headers/ instead of the system-wide headers, which may beout-of-date on older distros.
This resolves the following build error on Debian 6:...
dataplane: add virtio-blk data plane code
virtio-blk-data-plane is a subset implementation of virtio-blk. It onlyhandles read, write, and flush requests. It does this using a dedicatedthread that executes an epoll(2)-based event loop and processes I/O...
dataplane: add Linux AIO request queue
The IOQueue has a pool of iocb structs and a function to add newread/write requests. Multiple requests can be added before calling thesubmit function to actually tell the host kernel to begin I/O. Thisallows callers to batch requests and submit them in one go....
dataplane: add event loop
Outside the safety of the global mutex we need to poll on filedescriptors. I found epoll(2) is a convenient way to do that, althoughother options could replace this module in the future (such as anAioContext-based loop or glib's GMainLoop)....
dataplane: add virtqueue vring code
The virtio-blk-data-plane cannot access memory using the usual QEMUfunctions since it executes outside the global mutex and the memory APIsare this time are not thread-safe.
This patch introduces a virtqueue module based on the kernel's vhost...
dataplane: add host memory mapping code
The data plane thread needs to map guest physical addresses to hostpointers. Normally this is done with cpu_physical_memory_map() but thefunction assumes the global mutex is held. The data plane thread doesnot touch the global mutex and therefore needs a thread-safe memory...