mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-12-24 08:28:37 -07:00
It can be useful to run an AioContext from a thread which normally does
not "own" the AioContext. For example, request draining can be
implemented by acquiring the AioContext and looping aio_poll() until all
requests have been completed.
The following pattern should work:
/* Event loop thread */
while (running) {
aio_context_acquire(ctx);
aio_poll(ctx, true);
aio_context_release(ctx);
}
/* Another thread */
aio_context_acquire(ctx);
bdrv_read(bs, 0x1000, buf, 1);
aio_context_release(ctx);
This patch implements aio_context_acquire() and aio_context_release().
Note that existing aio_poll() callers do not need to worry about
acquiring and releasing - it is only needed when multiple threads will
call aio_poll() on the same AioContext.
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
|
||
|---|---|---|
| .. | ||
| aio.h | ||
| block.h | ||
| block_int.h | ||
| blockjob.h | ||
| coroutine.h | ||
| coroutine_int.h | ||
| nbd.h | ||
| qapi.h | ||
| scsi.h | ||
| snapshot.h | ||
| thread-pool.h | ||