From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:59430) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VCbFC-00041B-Sd for qemu-devel@nongnu.org; Thu, 22 Aug 2013 16:12:40 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1VCbF7-0004Pg-Qp for qemu-devel@nongnu.org; Thu, 22 Aug 2013 16:12:34 -0400 Received: from mx1.redhat.com ([209.132.183.28]:9119) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VCbF7-0004PZ-HZ for qemu-devel@nongnu.org; Thu, 22 Aug 2013 16:12:29 -0400 From: Stefan Hajnoczi Date: Thu, 22 Aug 2013 22:11:15 +0200 Message-Id: <1377202298-22896-20-git-send-email-stefanha@redhat.com> In-Reply-To: <1377202298-22896-1-git-send-email-stefanha@redhat.com> References: <1377202298-22896-1-git-send-email-stefanha@redhat.com> Subject: [Qemu-devel] [PULL 19/42] aio / timers: Add QEMUTimerListGroup to AioContext List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: Stefan Hajnoczi , Alex Bligh , Anthony Liguori From: Alex Bligh Add a QEMUTimerListGroup each AioContext (meaning a QEMUTimerList associated with each clock is added) and delete it when the AioContext is freed. Signed-off-by: Alex Bligh Signed-off-by: Stefan Hajnoczi --- async.c | 2 ++ include/block/aio.h | 4 ++++ tests/test-aio.c | 3 +++ tests/test-thread-pool.c | 3 +++ 4 files changed, 12 insertions(+) diff --git a/async.c b/async.c index 9791d8e..cd4a489 100644 --- a/async.c +++ b/async.c @@ -205,6 +205,7 @@ aio_ctx_finalize(GSource *source) event_notifier_cleanup(&ctx->notifier); qemu_mutex_destroy(&ctx->bh_lock); g_array_free(ctx->pollfds, TRUE); + timerlistgroup_deinit(&ctx->tlg); } static GSourceFuncs aio_source_funcs = { @@ -244,6 +245,7 @@ AioContext *aio_context_new(void) aio_set_event_notifier(ctx, &ctx->notifier, (EventNotifierHandler *) event_notifier_test_and_clear); + timerlistgroup_init(&ctx->tlg); return ctx; } diff --git a/include/block/aio.h b/include/block/aio.h index 1e3ed1c..06f3aad 100644 --- a/include/block/aio.h +++ b/include/block/aio.h @@ -19,6 +19,7 @@ #include "qemu/queue.h" #include "qemu/event_notifier.h" #include "qemu/thread.h" +#include "qemu/timer.h" typedef struct BlockDriverAIOCB BlockDriverAIOCB; typedef void BlockDriverCompletionFunc(void *opaque, int ret); @@ -73,6 +74,9 @@ struct AioContext { /* Thread pool for performing work and receiving completion callbacks */ struct ThreadPool *thread_pool; + + /* TimerLists for calling timers - one per clock type */ + QEMUTimerListGroup tlg; }; /** diff --git a/tests/test-aio.c b/tests/test-aio.c index 1ab5637..e1f394b 100644 --- a/tests/test-aio.c +++ b/tests/test-aio.c @@ -12,6 +12,7 @@ #include #include "block/aio.h" +#include "qemu/timer.h" AioContext *ctx; @@ -630,6 +631,8 @@ int main(int argc, char **argv) { GSource *src; + init_clocks(); + ctx = aio_context_new(); src = aio_get_g_source(ctx); g_source_attach(src, NULL); diff --git a/tests/test-thread-pool.c b/tests/test-thread-pool.c index 8188d1a..c1f8e13 100644 --- a/tests/test-thread-pool.c +++ b/tests/test-thread-pool.c @@ -3,6 +3,7 @@ #include "block/aio.h" #include "block/thread-pool.h" #include "block/block.h" +#include "qemu/timer.h" static AioContext *ctx; static ThreadPool *pool; @@ -205,6 +206,8 @@ int main(int argc, char **argv) { int ret; + init_clocks(); + ctx = aio_context_new(); pool = aio_get_thread_pool(ctx); -- 1.8.3.1