qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Alex Bligh <alex@alex.org.uk>
To: qemu-devel@nongnu.org
Cc: Kevin Wolf <kwolf@redhat.com>,
	Anthony Liguori <aliguori@us.ibm.com>,
	Alex Bligh <alex@alex.org.uk>,
	Jan Kiszka <jan.kiszka@siemens.com>,
	liu ping fan <qemulist@gmail.com>,
	Stefan Hajnoczi <stefanha@redhat.com>,
	Paolo Bonzini <pbonzini@redhat.com>,
	MORITA Kazutaka <morita.kazutaka@lab.ntt.co.jp>,
	rth@twiddle.net
Subject: [Qemu-devel] [RFC] [PATCHv9 11/31] aio / timers: Add QEMUTimerListGroup to AioContext
Date: Sat, 10 Aug 2013 11:06:15 +0100	[thread overview]
Message-ID: <1376129195-29872-12-git-send-email-alex@alex.org.uk> (raw)
In-Reply-To: <1376129195-29872-1-git-send-email-alex@alex.org.uk>

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 <alex@alex.org.uk>
---
 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 5ce3633..99fb5a8 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, NULL);
+    timerlistgroup_init(ctx->tlg);
 
     return ctx;
 }
diff --git a/include/block/aio.h b/include/block/aio.h
index cc77771..a13f6e8 100644
--- a/include/block/aio.h
+++ b/include/block/aio.h
@@ -18,6 +18,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);
@@ -72,6 +73,9 @@ typedef 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;
 } AioContext;
 
 /* Returns 1 if there are still outstanding AIO requests; 0 otherwise */
diff --git a/tests/test-aio.c b/tests/test-aio.c
index c173870..2d7ec4c 100644
--- a/tests/test-aio.c
+++ b/tests/test-aio.c
@@ -12,6 +12,7 @@
 
 #include <glib.h>
 #include "block/aio.h"
+#include "qemu/timer.h"
 
 AioContext *ctx;
 
@@ -628,6 +629,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 b62338f..27d6190 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.7.9.5

  parent reply	other threads:[~2013-08-10 10:07 UTC|newest]

Thread overview: 34+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-08-10 10:06 [Qemu-devel] [RFC] [PATCHv9 00/31] aio / timers: Add AioContext timers and use ppoll Alex Bligh
2013-08-10 10:06 ` [Qemu-devel] [RFC] [PATCHv9 01/31] aio / timers: Rename qemu_timer_* functions Alex Bligh
2013-08-10 10:06 ` [Qemu-devel] [RFC] [PATCHv9 02/31] aio / timers: Rename qemu_new_clock and expose clock types Alex Bligh
2013-08-10 10:06 ` [Qemu-devel] [RFC] [PATCHv9 03/31] aio / timers: add qemu-timer.c utility functions Alex Bligh
2013-08-10 10:06 ` [Qemu-devel] [RFC] [PATCHv9 04/31] aio / timers: Consistent treatment of disabled clocks for deadlines Alex Bligh
2013-08-10 10:06 ` [Qemu-devel] [RFC] [PATCHv9 05/31] aio / timers: add ppoll support with qemu_poll_ns Alex Bligh
2013-08-10 10:06 ` [Qemu-devel] [RFC] [PATCHv9 06/31] aio / timers: Add prctl(PR_SET_TIMERSLACK, 1, ...) to reduce timer slack Alex Bligh
2013-08-10 10:06 ` [Qemu-devel] [RFC] [PATCHv9 07/31] aio / timers: Make qemu_run_timers and qemu_run_all_timers return progress Alex Bligh
2013-08-10 10:06 ` [Qemu-devel] [RFC] [PATCHv9 08/31] aio / timers: Split QEMUClock into QEMUClock and QEMUTimerList Alex Bligh
2013-08-10 10:06 ` [Qemu-devel] [RFC] [PATCHv9 09/31] aio / timers: Untangle include files Alex Bligh
2013-08-10 10:06 ` [Qemu-devel] [RFC] [PATCHv9 10/31] aio / timers: Add QEMUTimerListGroup and helper functions Alex Bligh
2013-08-10 10:06 ` Alex Bligh [this message]
2013-08-10 10:06 ` [Qemu-devel] [RFC] [PATCHv9 12/31] aio / timers: Add a notify callback to QEMUTimerList Alex Bligh
2013-08-10 10:06 ` [Qemu-devel] [RFC] [PATCHv9 13/31] aio / timers: aio_ctx_prepare sets timeout from AioContext timers Alex Bligh
2013-08-10 10:06 ` [Qemu-devel] [RFC] [PATCHv9 14/31] aio / timers: Add aio_timer_init & aio_timer_new wrappers Alex Bligh
2013-08-10 10:06 ` [Qemu-devel] [RFC] [PATCHv9 15/31] aio / timers: Convert aio_poll to use AioContext timers' deadline Alex Bligh
2013-08-10 10:06 ` [Qemu-devel] [RFC] [PATCHv9 16/31] aio / timers: Convert mainloop to use timeout Alex Bligh
2013-08-10 10:06 ` [Qemu-devel] [RFC] [PATCHv9 17/31] aio / timers: On timer modification, qemu_notify or aio_notify Alex Bligh
2013-08-10 10:06 ` [Qemu-devel] [RFC] [PATCHv9 18/31] aio / timers: Introduce new API timer_new and friends Alex Bligh
2013-08-10 10:06 ` [Qemu-devel] [RFC] [PATCHv9 19/31] aio / timers: Use all timerlists in icount warp calculations Alex Bligh
2013-08-10 10:06 ` [Qemu-devel] [RFC] [PATCHv9 20/31] aio / timers: Add documentation and new format calls Alex Bligh
2013-08-10 10:06 ` [Qemu-devel] [RFC] [PATCHv9 21/31] aio / timers: Remove alarm timers Alex Bligh
2013-08-10 10:06 ` [Qemu-devel] [RFC] [PATCHv9 22/31] aio / timers: Remove legacy qemu_clock_deadline & qemu_timerlist_deadline Alex Bligh
2013-08-10 10:06 ` [Qemu-devel] [RFC] [PATCHv9 23/31] aio / timers: Add qemu_clock_get_ms and qemu_clock_get_ms Alex Bligh
2013-08-10 10:06 ` [Qemu-devel] [RFC] [PATCHv9 24/31] aio / timers: Rearrange timer.h & make legacy functions call non-legacy Alex Bligh
2013-08-10 10:06 ` [Qemu-devel] [RFC] [PATCHv9 25/31] aio / timers: Remove main_loop_timerlist Alex Bligh
2013-08-10 10:06 ` [Qemu-devel] [RFC] [PATCHv9 26/31] aio / timers: Convert rtc_clock to be a QEMUClockType Alex Bligh
2013-08-10 10:06 ` [Qemu-devel] [RFC] [PATCHv9 27/31] aio / timers: convert block_job_sleep_ns and co_sleep_ns to new API Alex Bligh
2013-08-10 10:06 ` [Qemu-devel] [RFC] [PATCHv9 28/31] aio / timers: Add test harness for AioContext timers Alex Bligh
2013-08-10 10:06 ` [Qemu-devel] [RFC] [PATCHv9 29/31] aio / timers: Add scripts/switch-timer-api Alex Bligh
2013-08-10 10:06 ` [Qemu-devel] [RFC] [PATCHv9 30/31] aio / timers: Switch entire codebase to the new timer API Alex Bligh
2013-08-10 10:06 ` [Qemu-devel] [RFC] [PATCHv9 31/31] aio / timers: Remove legacy interface Alex Bligh
2013-08-10 12:21 ` [Qemu-devel] [RFC] [PATCHv9 00/31] aio / timers: Add AioContext timers and use ppoll Paolo Bonzini
2013-08-10 12:26 ` Alex Bligh

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1376129195-29872-12-git-send-email-alex@alex.org.uk \
    --to=alex@alex.org.uk \
    --cc=aliguori@us.ibm.com \
    --cc=jan.kiszka@siemens.com \
    --cc=kwolf@redhat.com \
    --cc=morita.kazutaka@lab.ntt.co.jp \
    --cc=pbonzini@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=qemulist@gmail.com \
    --cc=rth@twiddle.net \
    --cc=stefanha@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).