On Fri, Oct 26, 2012 at 04:05:30PM +0200, Paolo Bonzini wrote: > Since half of the patches are in common between the two series, here > are both of them together. Under Wine I see a performance regression > due to AIO, but I wouldn't be surprised if it is an emulation artifact > (especially since attempts to use native AIO are converted by Wine to > synchronous I/O + the overhead of signaling). If testing gives the same > results on native Windows it can be reverted later. > > Anthony, please let me know if you want to apply this before or after > the rename. > > Paolo > > Paolo Bonzini (25): > event_notifier: add Win32 implementation > event_notifier: enable it to use pipes > aio: change qemu_aio_set_fd_handler to return void > aio: provide platform-independent API > aio: introduce AioContext, move bottom halves there > aio: add I/O handlers to the AioContext interface > aio: test node->deleted before calling io_flush > aio: add non-blocking variant of aio_wait > aio: prepare for introducing GSource-based dispatch > aio: add Win32 implementation > aio: make AioContexts GSources > aio: add aio_notify > aio: call aio_notify after setting I/O handlers > main-loop: use GSource to poll AIO file descriptors > main-loop: use aio_notify for qemu_notify_event > aio: clean up now-unused functions > linux-aio: use event notifiers > qemu-thread: add QemuSemaphore > aio: add generic thread-pool facility > block: switch posix-aio-compat to threadpool > raw: merge posix-aio-compat.c into block/raw-posix.c > raw-posix: rename raw-posix-aio.h, hide unavailable prototypes > raw-win32: add emulated AIO support > raw-posix: move linux-aio.c to block/ > raw-win32: implement native asynchronous I/O > > Makefile.objs | 10 +- > aio.c => aio-posix.c | 172 +++++--- > aio.c => aio-win32.c | 197 +++++---- > async.c | 118 ++++- > block/Makefile.objs | 9 +- > linux-aio.c => block/linux-aio.c | 51 +-- > block/{raw-posix-aio.h => raw-aio.h} | 29 +- > block/raw-posix.c | 301 ++++++++++++- > block/raw-win32.c | 221 +++++++--- > block/win32-aio.c | 226 ++++++++++ > event_notifier-posix.c | 120 +++++ > event_notifier.c => event_notifier-win32.c | 48 +- > event_notifier.h | 20 +- > hw/hw.h | 1 + > iohandler.c | 1 + > main-loop.c | 160 +++---- > main-loop.h | 56 +-- > oslib-posix.c | 31 -- > posix-aio-compat.c | 679 > ----------------------------- > qemu-aio.h | 206 ++++++++- > qemu-char.h | 1 + > qemu-common.h | 2 +- > qemu-coroutine-lock.c | 2 +- > qemu-os-win32.h | 1 - > qemu-thread-posix.c | 74 ++++ > qemu-thread-posix.h | 5 + > qemu-thread-win32.c | 35 ++ > qemu-thread-win32.h | 4 + > qemu-thread.h | 7 + > thread-pool.c | 279 ++++++++++++ > thread-pool.h | 34 ++ > trace-events | 5 + > 32 file modificati, 1926 inserzioni(+), 1179 rimozioni(-) > copy aio.c => aio-posix.c (44%) > rename aio.c => aio-win32.c (42%) > rename linux-aio.c => block/linux-aio.c (82%) > rename block/{raw-posix-aio.h => raw-aio.h} (71%) > create mode 100644 block/win32-aio.c > create mode 100644 event_notifier-posix.c > rename event_notifier.c => event_notifier-win32.c (49%) > delete mode 100644 posix-aio-compat.c > create mode 100644 thread-pool.c > create mode 100644 thread-pool.h
Posted a few small comments. Otherwise looks good. Stefan