Refactor AIO to allow multiple AIO implementations
authoraliguori <aliguori@c046a42c-6fe2-441c-8c8c-71466251a162>
Mon, 22 Sep 2008 19:17:18 +0000 (19:17 +0000)
committeraliguori <aliguori@c046a42c-6fe2-441c-8c8c-71466251a162>
Mon, 22 Sep 2008 19:17:18 +0000 (19:17 +0000)
commit9f2e5810f52ee74c2bd496b7f27afc4d000f784e
treeae411e977a38d038186d96cee86affe3e04e1d57
parent115423e4b4d9300730f2ca1edda77cbc7e2874e3
Refactor AIO to allow multiple AIO implementations

This patch refactors the AIO layer to allow multiple AIO implementations.  It's
only possible because of the recent signalfd() patch.

Right now, the AIO infrastructure is pretty specific to the block raw backend.
For other block devices to implement AIO, the qemu_aio_wait function must
support registration.  This patch introduces a new function,
qemu_aio_set_fd_handler, which can be used to register a file descriptor to be
called back.  qemu_aio_wait() now polls a set of file descriptors registered
with this function until one becomes readable or writable.

This patch should allow the implementation of alternative AIO backends (via a
thread pool or linux-aio) and AIO backends in non-traditional block devices
(like NBD).

Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5297 c046a42c-6fe2-441c-8c8c-71466251a162
Makefile
Makefile.target
aio.c [new file with mode: 0644]
block-raw-posix.c
block-raw-win32.c
block.c
block.h
qemu-aio.h [new file with mode: 0644]