From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:52131) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1V2mu3-00032e-0N for qemu-devel@nongnu.org; Fri, 26 Jul 2013 14:38:14 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1V2mu1-00049q-Kg for qemu-devel@nongnu.org; Fri, 26 Jul 2013 14:38:10 -0400 Received: from mail.avalus.com ([2001:41c8:10:1dd::10]:57402) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1V2mu1-00048J-E4 for qemu-devel@nongnu.org; Fri, 26 Jul 2013 14:38:09 -0400 From: Alex Bligh Date: Fri, 26 Jul 2013 19:37:29 +0100 Message-Id: <1374863862-32517-1-git-send-email-alex@alex.org.uk> In-Reply-To: <34B083D4DB6D2988A571E420@nimrod.local> References: <34B083D4DB6D2988A571E420@nimrod.local> Subject: [Qemu-devel] [RFC] [PATCHv4 00/13] aio / timers: Add AioContext timers and use ppoll List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: Kevin Wolf , Anthony Liguori , Alex Bligh , Stefan Hajnoczi , Paolo Bonzini , rth@twiddle.net 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. 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. 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 (13): aio / timers: add qemu-timer.c utility functions 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: Add a QEMUTimerList to AioContext aio / timers: Add an AioContext pointer to QEMUTimerList aio / timers: aio_ctx_prepare sets timeout from AioContext timers 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: Remove alarm timers aio / timers: Add test harness for AioContext timers aio-posix.c | 20 +- aio-win32.c | 22 +- async.c | 21 +- configure | 37 +++ include/block/aio.h | 5 + include/qemu/timer.h | 53 +++- main-loop.c | 52 +++- qemu-timer.c | 735 ++++++++++++++-------------------------------- tests/test-aio.c | 143 ++++++++- tests/test-thread-pool.c | 3 + vl.c | 4 +- 11 files changed, 544 insertions(+), 551 deletions(-) -- 1.7.9.5