[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL v2 00/39] AioContext, thread pool, Win32 AIO
From: |
Paolo Bonzini |
Subject: |
[Qemu-devel] [PULL v2 00/39] AioContext, thread pool, Win32 AIO |
Date: |
Wed, 31 Oct 2012 16:30:17 +0100 |
The following changes since commit aee0bf7d8d7564f8f2c40e4501695c492b7dd8d1:
tap-win32: stubs to fix win32 build (2012-10-30 19:18:53 +0000)
are available in the git repository at:
git://github.com/bonzini/qemu.git threadpool
for you to fetch changes up to f563a5d7a820424756f358e747238f03e866838a:
Merge remote-tracking branch 'origin/master' into threadpool (2012-10-31
10:42:51 +0100)
Patches 1 to 12 eliminate the dependencies of qemu-tool.c on the main loop
and AIO infrastructure. Otherwise the build rules for vscclient, tests
and qemu-ga become too hairy. Patches 13 to 30 introduce AioContext
and a new portable AIO API based on EventNotifier. Patches 31 to 38
introduce a generic threadpool that replaces posix-aio-compat.c.
Patch 39 introduces support for Win32 native AIO. (As usual, Win32
bits are mostly there as a testbed for the flexibility of the API).
The patches are based in the remote branch on a known-good commit for
Win32 (because TCG is a bit broken in master). Thus there is a merge
commit at the top to fix the trivial conflicts between patch 1 and the
later introduction of iov_copy.
Paolo
----------------------------------------------------------------
Paolo Bonzini (39):
janitor: move iovector functions out of cutils.c
build: move cutils.o and qemu-timer-common.o to oslib-obj-y
compiler: use weak aliases to provide default definitions
sockets: use weak aliases instead of qemu-tool.c
fdsets: use weak aliases instead of qemu-tool.c/qemu-user.c
iohandler: add weak alias in qemu-sockets.c, for qemu-ga
win32: add weak version of qemu_fd_register
qemu-timer: make initialization functions idempotent
main-loop: unify qemu_init_main_loop between QEMU and tools
qemu-tool: do not depend on qemu-timer.c
build: opts-visitor is not really part of QAPI
build: do not include main loop where it is not actually used
event_notifier: add Win32 implementation
event_notifier: enable it to use pipes
vl: init main loop earlier
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
threadpool: do not take lock in event_notifier_ready
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 | 7 +-
Makefile.objs | 22 +-
aio-posix.c | 268 ++++++++++++++
aio-win32.c | 215 +++++++++++
aio.c | 194 ----------
arch_init.h | 2 +-
async.c | 118 +++++-
block/Makefile.objs | 9 +-
linux-aio.c => block/linux-aio.c | 52 ++-
block/{raw-posix-aio.h => raw-aio.h} | 29 +-
block/raw-posix.c | 308 +++++++++++++++-
block/raw-win32.c | 221 +++++++++---
block/win32-aio.c | 226 ++++++++++++
compiler.h | 11 +-
cutils.c | 108 ------
event_notifier-posix.c | 120 +++++++
event_notifier-win32.c | 59 +++
event_notifier.c | 67 ----
event_notifier.h | 20 +-
hw/hw.h | 1 +
iohandler.c | 1 +
iov.c | 103 ++++++
main-loop.c | 157 +++-----
main-loop.h | 66 +---
osdep.c | 30 ++
oslib-posix.c | 31 --
oslib-win32.c | 5 +
posix-aio-compat.c | 679 -----------------------------------
qapi/Makefile.objs | 4 +-
qemu-aio.h | 206 ++++++++++-
qemu-char.h | 1 +
qemu-common.h | 3 +-
qemu-coroutine-lock.c | 2 +-
qemu-os-win32.h | 1 -
qemu-sockets.c | 18 +
qemu-thread-posix.c | 80 +++++
qemu-thread-posix.h | 5 +
qemu-thread-win32.c | 35 ++
qemu-thread-win32.h | 4 +
qemu-thread.h | 7 +
qemu-timer.c | 12 +-
qemu-tool.c | 35 +-
qemu-user.c | 20 --
qmp.c | 3 +-
tests/Makefile | 8 +-
thread-pool.c | 289 +++++++++++++++
thread-pool.h | 34 ++
trace-events | 5 +
vl.c | 17 +-
49 file modificati, 2429 inserzioni(+), 1489 rimozioni(-)
create mode 100644 aio-posix.c
create mode 100644 aio-win32.c
delete mode 100644 aio.c
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
create mode 100644 event_notifier-win32.c
delete mode 100644 event_notifier.c
delete mode 100644 posix-aio-compat.c
create mode 100644 thread-pool.c
create mode 100644 thread-pool.h
--
1.7.12.1
- [Qemu-devel] [PULL v2 00/39] AioContext, thread pool, Win32 AIO,
Paolo Bonzini <=
- [Qemu-devel] [PATCH v2 02/39] build: move cutils.o and qemu-timer-common.o to oslib-obj-y, Paolo Bonzini, 2012/10/31
- [Qemu-devel] [PATCH v2 03/39] compiler: use weak aliases to provide default definitions, Paolo Bonzini, 2012/10/31
- [Qemu-devel] [PATCH v2 04/39] sockets: use weak aliases instead of qemu-tool.c, Paolo Bonzini, 2012/10/31
- [Qemu-devel] [PATCH v2 01/39] janitor: move iovector functions out of cutils.c, Paolo Bonzini, 2012/10/31
- [Qemu-devel] [PATCH v2 05/39] fdsets: use weak aliases instead of qemu-tool.c/qemu-user.c, Paolo Bonzini, 2012/10/31
- [Qemu-devel] [PATCH v2 06/39] iohandler: add weak alias in qemu-sockets.c, for qemu-ga, Paolo Bonzini, 2012/10/31
- [Qemu-devel] [PATCH v2 07/39] win32: add weak version of qemu_fd_register, Paolo Bonzini, 2012/10/31
- [Qemu-devel] [PATCH v2 08/39] qemu-timer: make initialization functions idempotent, Paolo Bonzini, 2012/10/31
- [Qemu-devel] [PATCH v2 09/39] main-loop: unify qemu_init_main_loop between QEMU and tools, Paolo Bonzini, 2012/10/31
- [Qemu-devel] [PATCH v2 10/39] qemu-tool: do not depend on qemu-timer.c, Paolo Bonzini, 2012/10/31