summaryrefslogtreecommitdiffstats
path: root/trace-events
diff options
context:
space:
mode:
authorPaolo Bonzini2012-02-23 13:23:34 +0100
committerPaolo Bonzini2012-10-31 10:37:48 +0100
commitd354c7eccf5466ec2715a03d3f33dbfd6680dcc5 (patch)
tree1c77f58c201cb14dc7f13d45a1e4cd70ce2f30d9 /trace-events
parentqemu-thread: add QemuSemaphore (diff)
downloadqemu-d354c7eccf5466ec2715a03d3f33dbfd6680dcc5.tar.gz
qemu-d354c7eccf5466ec2715a03d3f33dbfd6680dcc5.tar.xz
qemu-d354c7eccf5466ec2715a03d3f33dbfd6680dcc5.zip
aio: add generic thread-pool facility
Add a generic thread-pool. The code is roughly based on posix-aio-compat.c, with some changes, especially the following: - use QemuSemaphore instead of QemuCond; - separate the state of the thread from the return code of the worker function. The return code is totally opaque for the thread pool; - do not busy wait when doing cancellation. A more generic threadpool (but still specific to I/O so that in the future it can use special scheduling classes or PI mutexes) can have many uses: it allows more flexibility in raw-posix.c and can more easily be extended to Win32, and it will also be used to do an msync of the persistent bitmap. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Diffstat (limited to 'trace-events')
-rw-r--r--trace-events5
1 files changed, 5 insertions, 0 deletions
diff --git a/trace-events b/trace-events
index e2d4580d4c..58c18ebb6c 100644
--- a/trace-events
+++ b/trace-events
@@ -90,6 +90,11 @@ virtio_blk_rw_complete(void *req, int ret) "req %p ret %d"
virtio_blk_handle_write(void *req, uint64_t sector, size_t nsectors) "req %p sector %"PRIu64" nsectors %zu"
virtio_blk_handle_read(void *req, uint64_t sector, size_t nsectors) "req %p sector %"PRIu64" nsectors %zu"
+# thread-pool.c
+thread_pool_submit(void *req, void *opaque) "req %p opaque %p"
+thread_pool_complete(void *req, void *opaque, int ret) "req %p opaque %p ret %d"
+thread_pool_cancel(void *req, void *opaque) "req %p opaque %p"
+
# posix-aio-compat.c
paio_submit(void *acb, void *opaque, int64_t sector_num, int nb_sectors, int type) "acb %p opaque %p sector_num %"PRId64" nb_sectors %d type %d"
paio_complete(void *acb, void *opaque, int ret) "acb %p opaque %p ret %d"