mirror of https://github.com/xemu-project/xemu.git
async: Register/unregister aiocontext in graph lock list
Add/remove the AioContext in aio_context_list in graph-lock.c when it is created/destroyed. This allows using the graph locking operations from this AioContext. In order to allow linking util/async.c with binaries that don't include the block layer, introduce stubs for (un)register_aiocontext(). Signed-off-by: Emanuele Giuseppe Esposito <eesposit@redhat.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com> Message-Id: <20221207131838.239125-5-kwolf@redhat.com> Reviewed-by: Emanuele Giuseppe Esposito <eesposit@redhat.com> Reviewed-by: Kevin Wolf <kwolf@redhat.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
This commit is contained in:
parent
8aa77000c2
commit
587d82fae2
|
@ -0,0 +1,10 @@
|
||||||
|
#include "qemu/osdep.h"
|
||||||
|
#include "block/graph-lock.h"
|
||||||
|
|
||||||
|
void register_aiocontext(AioContext *ctx)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void unregister_aiocontext(AioContext *ctx)
|
||||||
|
{
|
||||||
|
}
|
|
@ -13,6 +13,7 @@ stub_ss.add(files('error-printf.c'))
|
||||||
stub_ss.add(files('fdset.c'))
|
stub_ss.add(files('fdset.c'))
|
||||||
stub_ss.add(files('gdbstub.c'))
|
stub_ss.add(files('gdbstub.c'))
|
||||||
stub_ss.add(files('get-vm-name.c'))
|
stub_ss.add(files('get-vm-name.c'))
|
||||||
|
stub_ss.add(files('graph-lock.c'))
|
||||||
if linux_io_uring.found()
|
if linux_io_uring.found()
|
||||||
stub_ss.add(files('io_uring.c'))
|
stub_ss.add(files('io_uring.c'))
|
||||||
endif
|
endif
|
||||||
|
|
|
@ -27,6 +27,7 @@
|
||||||
#include "qapi/error.h"
|
#include "qapi/error.h"
|
||||||
#include "block/aio.h"
|
#include "block/aio.h"
|
||||||
#include "block/thread-pool.h"
|
#include "block/thread-pool.h"
|
||||||
|
#include "block/graph-lock.h"
|
||||||
#include "qemu/main-loop.h"
|
#include "qemu/main-loop.h"
|
||||||
#include "qemu/atomic.h"
|
#include "qemu/atomic.h"
|
||||||
#include "qemu/rcu_queue.h"
|
#include "qemu/rcu_queue.h"
|
||||||
|
@ -376,6 +377,7 @@ aio_ctx_finalize(GSource *source)
|
||||||
qemu_rec_mutex_destroy(&ctx->lock);
|
qemu_rec_mutex_destroy(&ctx->lock);
|
||||||
qemu_lockcnt_destroy(&ctx->list_lock);
|
qemu_lockcnt_destroy(&ctx->list_lock);
|
||||||
timerlistgroup_deinit(&ctx->tlg);
|
timerlistgroup_deinit(&ctx->tlg);
|
||||||
|
unregister_aiocontext(ctx);
|
||||||
aio_context_destroy(ctx);
|
aio_context_destroy(ctx);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -574,6 +576,8 @@ AioContext *aio_context_new(Error **errp)
|
||||||
ctx->thread_pool_min = 0;
|
ctx->thread_pool_min = 0;
|
||||||
ctx->thread_pool_max = THREAD_POOL_MAX_THREADS_DEFAULT;
|
ctx->thread_pool_max = THREAD_POOL_MAX_THREADS_DEFAULT;
|
||||||
|
|
||||||
|
register_aiocontext(ctx);
|
||||||
|
|
||||||
return ctx;
|
return ctx;
|
||||||
fail:
|
fail:
|
||||||
g_source_destroy(&ctx->source);
|
g_source_destroy(&ctx->source);
|
||||||
|
|
Loading…
Reference in New Issue