diff options
| author | Stefan Hajnoczi | 2014-03-03 11:30:04 +0100 |
|---|---|---|
| committer | Stefan Hajnoczi | 2014-03-13 14:42:24 +0100 |
| commit | 98563fc3ec44c1becce6f1720ad6b0a82ed101b4 (patch) | |
| tree | 18adf9c0239707158d5f95ef2e0702c5eeaa29b8 /include/exec/memory-internal.h | |
| parent | rfifolock: add recursive FIFO lock (diff) | |
| download | qemu-98563fc3ec44c1becce6f1720ad6b0a82ed101b4.tar.gz qemu-98563fc3ec44c1becce6f1720ad6b0a82ed101b4.tar.xz qemu-98563fc3ec44c1becce6f1720ad6b0a82ed101b4.zip | |
aio: add aio_context_acquire() and aio_context_release()
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>
Diffstat (limited to 'include/exec/memory-internal.h')
0 files changed, 0 insertions, 0 deletions
