*/
void aio_context_setup(AioContext *ctx);
+/**
+ * aio_context_destroy:
+ * @ctx: the aio context
+ *
+ * Destroy the aio context.
+ */
+void aio_context_destroy(AioContext *ctx);
+
/**
* aio_context_set_poll_params:
* @ctx: the aio context
static void aio_epoll_disable(AioContext *ctx)
{
- ctx->epoll_available = false;
- if (!ctx->epoll_enabled) {
+ ctx->epoll_enabled = false;
+ if (!ctx->epoll_available) {
return;
}
- ctx->epoll_enabled = false;
+ ctx->epoll_available = false;
close(ctx->epollfd);
}
#endif
}
+void aio_context_destroy(AioContext *ctx)
+{
+#ifdef CONFIG_EPOLL_CREATE1
+ aio_epoll_disable(ctx);
+#endif
+}
+
void aio_context_set_poll_params(AioContext *ctx, int64_t max_ns,
int64_t grow, int64_t shrink, Error **errp)
{
{
}
+void aio_context_destroy(AioContext *ctx)
+{
+}
+
void aio_context_set_poll_params(AioContext *ctx, int64_t max_ns,
int64_t grow, int64_t shrink, Error **errp)
{
qemu_rec_mutex_destroy(&ctx->lock);
qemu_lockcnt_destroy(&ctx->list_lock);
timerlistgroup_deinit(&ctx->tlg);
+ aio_context_destroy(ctx);
}
static GSourceFuncs aio_source_funcs = {