qemu/include
Stefan Hajnoczi f7311ccc63 threadpool: add thread_pool_new() and thread_pool_free()
ThreadPool is tied to an AioContext through its event notifier, which
dictates in which AioContext the work item's callback function will be
invoked.

In order to support multiple AioContexts we need to support multiple
ThreadPool instances.

This patch adds the new/free functions.  The free function deserves
special attention because it quiesces remaining worker threads.  This
requires a new condition variable and a "stopping" flag to let workers
know they should terminate once idle.

We never needed to do this before since the global threadpool was not
explicitly destroyed until process termination.

Also stash the AioContext pointer in ThreadPool so that we can call
aio_set_event_notifier() in thread_pool_free().  We didn't need to hold
onto AioContext previously since there was no free function.

Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
2013-03-15 16:07:50 +01:00
..
block threadpool: add thread_pool_new() and thread_pool_free() 2013-03-15 16:07:50 +01:00
bt softmmu: move remaining include files to include/ subdirectories 2012-12-19 08:32:46 +01:00
char chardev: add braille support to qapi 2013-03-13 10:27:46 +01:00
disas build: kill libdis, move disassemblers to disas/ 2012-12-19 08:29:06 +01:00
exec cpu: Pass CPUState to cpu_interrupt() 2013-03-12 10:35:55 +01:00
fpu softfloat: Implement uint64_to_float128 2013-01-05 10:12:50 +00:00
migration stubs: Add a vmstate_dummy struct for CONFIG_USER_ONLY 2013-03-12 10:35:54 +01:00
monitor hw: move qdev-monitor.o to toplevel directory 2013-03-01 13:54:10 +01:00
net net: reduce the unnecessary memory allocation of multiqueue 2013-02-27 16:10:47 +01:00
qapi Add qdict_clone_shallow() 2013-03-15 16:07:49 +01:00
qemu main-loop: add qemu_get_aio_context() 2013-03-15 16:07:50 +01:00
qom cpu: Replace do_interrupt() by CPUClass::do_interrupt method 2013-03-12 10:35:55 +01:00
sysemu blockdev: Keep a copy of DriveInfo.serial 2013-03-15 16:07:49 +01:00
tpm Support for TPM command line options 2013-03-12 13:40:11 -05:00
ui chardev: add vc support to qapi 2013-03-13 10:27:46 +01:00
config.h janitor: move remaining public headers to include/ 2012-12-19 08:32:46 +01:00
elf.h janitor: move remaining public headers to include/ 2012-12-19 08:32:46 +01:00
libfdt_env.h fdt: Use bswapN instead of bswap_N 2013-01-12 12:22:58 +00:00
qemu-common.h glib: Add compat wrapper for g_poll on old glib 2013-02-26 13:35:48 -06:00
trace.h build: some simplifications for "trace/Makefile.objs" 2013-01-12 18:42:51 +01:00