diff options
author | Paolo Bonzini <pbonzini@redhat.com> | 2012-02-23 13:23:34 +0100 |
---|---|---|
committer | Paolo Bonzini <pbonzini@redhat.com> | 2012-10-31 10:37:48 +0100 |
commit | d354c7eccf5466ec2715a03d3f33dbfd6680dcc5 (patch) | |
tree | 1c77f58c201cb14dc7f13d45a1e4cd70ce2f30d9 /trace-events | |
parent | 38b14db34e16bb0ae1f28b7ddccb6aa11a2a96a1 (diff) | |
download | qemu-d354c7eccf5466ec2715a03d3f33dbfd6680dcc5.zip qemu-d354c7eccf5466ec2715a03d3f33dbfd6680dcc5.tar.gz qemu-d354c7eccf5466ec2715a03d3f33dbfd6680dcc5.tar.bz2 |
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-events | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/trace-events b/trace-events index e2d4580..58c18eb 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" |