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>, 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: Re: [Qemu-devel] [RFC] [PATCHv7 00/22] aio / timers: Add AioContext timers and use ppoll
Date: Thu, 08 Aug 2013 08:52:52 +0100 [thread overview]
Message-ID: <18A4150BC40D7A494416CB1A@nimrod.local> (raw)
In-Reply-To: <1375832956-7588-1-git-send-email-alex@alex.org.uk>
Pingfan has given me an idea here. I can convert the API over to solely
use QEMUClockType and not even expose struct QEMUClock *. I'll do this in
v8. I have that working here and the API is much cleaner. Now I just need
to reengineer it into git.
Alex
--On 7 August 2013 00:48:54 +0100 Alex Bligh <alex@alex.org.uk> wrote:
> This patch series adds support for timers attached to an AioContext clock
> which get called within aio_poll.
>
> In doing so it removes alarm timers and moves to use ppoll where possible.
>
> This patch set 'sort of' passes make check (see below for caveat)
> including a new test harness for the aio timers, but has not been
> tested much beyond that. In particular, the win32 changes have not
> even been compile tested. Equally, alterations to use_icount
> are untested.
>
> Caveat: I have had to alter tests/test-aio.c so the following error
> no longer occurs.
>
> ERROR:tests/test-aio.c:346:test_wait_event_notifier_noflush: assertion
> failed: (aio_poll(ctx, false))
>
> As gar as I can tell, this check was incorrect, in that it checking
> aio_poll makes progress when in fact it should not make progress. I
> fixed an issue where aio_poll was (as far as I can tell) wrongly
> returning true on a timeout, and that generated this error.
>
> Note also the comment on patch 18 in relation to a possible bug
> in cpus.c.
>
> Changes since v6:
> * Fix build failure in vnc-auth-sasl.c
> * Split first patch into 3
> * Add assert on timerlist_free
> * Fix ==/= error on qemu_clock_use_for_deadline
> * Remove unnecessary cast in aio_timerlist_notify
> * Fix bad deadline comparison in aio_ctx_check
> * Add assert to timerlist_new_from_clock to check init_clocks
> * Use timer_list not tl
> * Change default_timerlistgroup to main_loop_timerlistgroup
> * Add comment on commit for qemu_clock_use_for_deadline
> * Fixed various include file issues
> * Convert *_has_timers and *_has_expired to return bool
> * Make loop variable consistent when looping through clock types
> * Add documentation to existing qemu_timer calls
> * Remove qemu_clock_deadline and move to qemu_clock_deadline_ns
>
> Changes since v5:
> * Rebase onto master (b9ac5d9)
> * Fix spacing in typedef QEMUTimerList
> * Rename 'QEMUClocks' extern to 'qemu_clocks'
>
> Changes since v4:
> * Rename qemu_timerlist_ functions to timer_list (per Paolo Bonzini)
> * Rename qemu_timer_.*timerlist.* to timer_ (per Paolo Bonzini)
> * Use enum for QEMUClockType
> * Put clocks into an array; remove global variables
> * Introduce QEMUTimerListGroup - a timeliest of each type
> * Add a QEMUTimerListGroup to AioContext
> * Use a callback on timer modification, rather than binding in
> AioContext into the timeliest
> * Make cpus.c iterate over all timerlists when it does a notify
> * Make cpus.c icount timeout use soonest timeout
> across all timerlists
>
> Changes since v3:
> * Split up QEMUClock and QEMUClock list
> * Improve commenting
> * Fix comment in vl.c
> * Change test/test-aio.c to reflect correct behaviour in aio_poll.
>
> Changes since v2:
> * Reordered to remove alarm timers last
> * Added prctl(PR_SET_TIMERSLACK, 1, ...)
> * Renamed qemu_g_poll_ns to qemu_poll_ns
> * Moved declaration of above & drop glib types
> * Do not use a global list of qemu clocks
> * Add AioContext * to QEMUClock
> * Split up conversion to use ppoll and timers
> * Indentation fix
> * Fix aio_win32.c aio_poll to return progress
> * aio_notify / qemu_notify when timers are modified
> * change comment in deprecation of clock options
>
> Alex Bligh (22):
> aio / timers: Add qemu_clock_free and expose qemu_clock_new and clock
> types
> aio / timers: add qemu-timer.c utility functions
> aio / timers: Consistent treatment of disabled clocks for deadlines
> aio / timers: add ppoll support with qemu_poll_ns
> aio / timers: Add prctl(PR_SET_TIMERSLACK, 1, ...) to reduce timer
> slack
> aio / timers: Make qemu_run_timers and qemu_run_all_timers return
> progress
> aio / timers: Split QEMUClock into QEMUClock and QEMUTimerList
> aio / timers: Untangle include files
> aio / timers: Add QEMUTimerListGroup and helper functions
> aio / timers: Add QEMUTimerListGroup to AioContext
> aio / timers: Add a notify callback to QEMUTimerList
> aio / timers: aio_ctx_prepare sets timeout from AioContext timers
> aio / timers: Add aio_timer_new wrapper
> aio / timers: Convert aio_poll to use AioContext timers' deadline
> aio / timers: Convert mainloop to use timeout
> aio / timers: On timer modification, qemu_notify or aio_notify
> aio / timers: Introduce new API qemu_timer_new and friends
> aio / timers: Use all timerlists in icount warp calculations
> aio / timers: Add documentation and new format calls
> aio / timers: Remove alarm timers
> aio / timers: Add test harness for AioContext timers
> aio / timers: Remove legacy qemu_clock_deadline &
> qemu_timerlist_deadline
>
> aio-posix.c | 20 +-
> aio-win32.c | 22 +-
> async.c | 20 +-
> configure | 37 ++
> cpus.c | 46 ++-
> dma-helpers.c | 1 +
> hw/dma/xilinx_axidma.c | 1 +
> hw/timer/arm_timer.c | 1 +
> hw/timer/exynos4210_mct.c | 1 +
> hw/timer/exynos4210_pwm.c | 1 +
> hw/timer/grlib_gptimer.c | 2 +
> hw/timer/imx_epit.c | 1 +
> hw/timer/imx_gpt.c | 1 +
> hw/timer/lm32_timer.c | 1 +
> hw/timer/puv3_ost.c | 1 +
> hw/timer/sh_timer.c | 1 +
> hw/timer/slavio_timer.c | 1 +
> hw/timer/xilinx_timer.c | 1 +
> hw/tpm/tpm_tis.c | 1 +
> hw/usb/hcd-uhci.c | 1 +
> include/block/aio.h | 23 ++
> include/block/block_int.h | 1 +
> include/block/coroutine.h | 2 +
> include/qemu/timer.h | 857
> +++++++++++++++++++++++++++++++++++++++++++-- main-loop.c
> | 49 ++-
> migration-exec.c | 1 +
> migration-fd.c | 1 +
> migration-tcp.c | 1 +
> migration-unix.c | 1 +
> migration.c | 1 +
> nbd.c | 1 +
> net/net.c | 1 +
> net/socket.c | 1 +
> qemu-coroutine-io.c | 1 +
> qemu-io-cmds.c | 1 +
> qemu-nbd.c | 1 +
> qemu-timer.c | 803
> +++++++++++++++--------------------------- qtest.c |
> 2 +-
> slirp/misc.c | 1 +
> tests/test-aio.c | 144 +++++++-
> tests/test-thread-pool.c | 3 +
> thread-pool.c | 1 +
> ui/vnc-auth-sasl.h | 1 +
> ui/vnc-auth-vencrypt.c | 2 +-
> ui/vnc-ws.c | 1 +
> vl.c | 4 +-
> 46 files changed, 1480 insertions(+), 586 deletions(-)
>
> --
> 1.7.9.5
>
>
--
Alex Bligh
prev parent reply other threads:[~2013-08-08 7:53 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-08-06 23:48 [Qemu-devel] [RFC] [PATCHv7 00/22] aio / timers: Add AioContext timers and use ppoll Alex Bligh
2013-08-06 23:48 ` [Qemu-devel] [RFC] [PATCHv7 01/22] aio / timers: Add qemu_clock_free and expose qemu_clock_new and clock types Alex Bligh
2013-08-07 11:31 ` Stefan Hajnoczi
2013-08-07 11:37 ` Alex Bligh
2013-08-07 15:47 ` Paolo Bonzini
2013-08-07 11:31 ` Stefan Hajnoczi
2013-08-08 6:21 ` liu ping fan
2013-08-08 6:37 ` Alex Bligh
2013-08-06 23:48 ` [Qemu-devel] [RFC] [PATCHv7 02/22] aio / timers: add qemu-timer.c utility functions Alex Bligh
2013-08-06 23:48 ` [Qemu-devel] [RFC] [PATCHv7 03/22] aio / timers: Consistent treatment of disabled clocks for deadlines Alex Bligh
2013-08-06 23:48 ` [Qemu-devel] [RFC] [PATCHv7 04/22] aio / timers: add ppoll support with qemu_poll_ns Alex Bligh
2013-08-06 23:48 ` [Qemu-devel] [RFC] [PATCHv7 05/22] aio / timers: Add prctl(PR_SET_TIMERSLACK, 1, ...) to reduce timer slack Alex Bligh
2013-08-06 23:49 ` [Qemu-devel] [RFC] [PATCHv7 06/22] aio / timers: Make qemu_run_timers and qemu_run_all_timers return progress Alex Bligh
2013-08-06 23:49 ` [Qemu-devel] [RFC] [PATCHv7 07/22] aio / timers: Split QEMUClock into QEMUClock and QEMUTimerList Alex Bligh
2013-08-08 6:12 ` liu ping fan
2013-08-06 23:49 ` [Qemu-devel] [RFC] [PATCHv7 08/22] aio / timers: Untangle include files Alex Bligh
2013-08-06 23:49 ` [Qemu-devel] [RFC] [PATCHv7 09/22] aio / timers: Add QEMUTimerListGroup and helper functions Alex Bligh
2013-08-06 23:49 ` [Qemu-devel] [RFC] [PATCHv7 10/22] aio / timers: Add QEMUTimerListGroup to AioContext Alex Bligh
2013-08-06 23:49 ` [Qemu-devel] [RFC] [PATCHv7 11/22] aio / timers: Add a notify callback to QEMUTimerList Alex Bligh
2013-08-06 23:49 ` [Qemu-devel] [RFC] [PATCHv7 12/22] aio / timers: aio_ctx_prepare sets timeout from AioContext timers Alex Bligh
2013-08-06 23:49 ` [Qemu-devel] [RFC] [PATCHv7 13/22] aio / timers: Add aio_timer_new wrapper Alex Bligh
2013-08-06 23:49 ` [Qemu-devel] [RFC] [PATCHv7 14/22] aio / timers: Convert aio_poll to use AioContext timers' deadline Alex Bligh
2013-08-06 23:49 ` [Qemu-devel] [RFC] [PATCHv7 15/22] aio / timers: Convert mainloop to use timeout Alex Bligh
2013-08-06 23:49 ` [Qemu-devel] [RFC] [PATCHv7 16/22] aio / timers: On timer modification, qemu_notify or aio_notify Alex Bligh
2013-08-06 23:49 ` [Qemu-devel] [RFC] [PATCHv7 17/22] aio / timers: Introduce new API qemu_timer_new and friends Alex Bligh
2013-08-06 23:49 ` [Qemu-devel] [RFC] [PATCHv7 18/22] aio / timers: Use all timerlists in icount warp calculations Alex Bligh
2013-08-06 23:49 ` [Qemu-devel] [RFC] [PATCHv7 19/22] aio / timers: Add documentation and new format calls Alex Bligh
2013-08-06 23:49 ` [Qemu-devel] [RFC] [PATCHv7 20/22] aio / timers: Remove alarm timers Alex Bligh
2013-08-06 23:49 ` [Qemu-devel] [RFC] [PATCHv7 21/22] aio / timers: Add test harness for AioContext timers Alex Bligh
2013-08-06 23:49 ` [Qemu-devel] [RFC] [PATCHv7 22/22] aio / timers: Remove legacy qemu_clock_deadline & qemu_timerlist_deadline Alex Bligh
2013-08-08 7:52 ` Alex Bligh [this message]
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=18A4150BC40D7A494416CB1A@nimrod.local \
--to=alex@alex.org.uk \
--cc=aliguori@us.ibm.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).