From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:41886) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WKHvy-00005e-7Q for qemu-devel@nongnu.org; Sun, 02 Mar 2014 20:44:52 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1WKHvs-0005GX-Bh for qemu-devel@nongnu.org; Sun, 02 Mar 2014 20:44:46 -0500 Received: from mail-pb0-x231.google.com ([2607:f8b0:400e:c01::231]:62277) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WKHvs-0005GO-2C for qemu-devel@nongnu.org; Sun, 02 Mar 2014 20:44:40 -0500 Received: by mail-pb0-f49.google.com with SMTP id jt11so3073604pbb.8 for ; Sun, 02 Mar 2014 17:44:38 -0800 (PST) From: Xuebing Wang Date: Mon, 3 Mar 2014 09:43:39 +0800 Message-Id: <1393811020-24881-7-git-send-email-xbing6@gmail.com> In-Reply-To: <1393811020-24881-1-git-send-email-xbing6@gmail.com> References: <1393811020-24881-1-git-send-email-xbing6@gmail.com> Subject: [Qemu-devel] [PULL 6/7] timer: move general utility functions together List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org, pbonzini@redhat.com, stefanha@redhat.com Cc: xbing6@gmail.com Signed-off-by: Xuebing Wang Reviewed-By: Alex Bligh --- qemu-timer.c | 97 ++++++++++++++++++++++++++++++---------------------------- 1 file changed, 50 insertions(+), 47 deletions(-) diff --git a/qemu-timer.c b/qemu-timer.c index c9801da..e592c14 100644 --- a/qemu-timer.c +++ b/qemu-timer.c @@ -501,53 +501,6 @@ int64_t timerlistgroup_deadline_ns(QEMUTimerListGroup *tlg) return deadline; } -/* Transition function to convert a nanosecond timeout to ms - * This is used where a system does not support ppoll - */ -int qemu_timeout_ns_to_ms(int64_t ns) -{ - int64_t ms; - if (ns < 0) { - return -1; - } - - if (!ns) { - return 0; - } - - /* Always round up, because it's better to wait too long than to wait too - * little and effectively busy-wait - */ - ms = (ns + SCALE_MS - 1) / SCALE_MS; - - /* To avoid overflow problems, limit this to 2^31, i.e. approx 25 days */ - if (ms > (int64_t) INT32_MAX) { - ms = INT32_MAX; - } - - return (int) ms; -} - - -/* qemu implementation of g_poll which uses a nanosecond timeout but is - * otherwise identical to g_poll - */ -int qemu_poll_ns(GPollFD *fds, guint nfds, int64_t timeout) -{ -#ifdef CONFIG_PPOLL - if (timeout < 0) { - return ppoll((struct pollfd *)fds, nfds, NULL, NULL); - } else { - struct timespec ts; - ts.tv_sec = timeout / 1000000000LL; - ts.tv_nsec = timeout % 1000000000LL; - return ppoll((struct pollfd *)fds, nfds, &ts, NULL); - } -#else - return g_poll(fds, nfds, qemu_timeout_ns_to_ms(timeout)); -#endif -} - /* * QEMUTimer */ @@ -683,6 +636,56 @@ uint64_t timer_expire_time_ns(QEMUTimer *ts) return timer_pending(ts) ? ts->expire_time : -1; } +/* + * General utility functions + */ + +/* Transition function to convert a nanosecond timeout to ms + * This is used where a system does not support ppoll + */ +int qemu_timeout_ns_to_ms(int64_t ns) +{ + int64_t ms; + if (ns < 0) { + return -1; + } + + if (!ns) { + return 0; + } + + /* Always round up, because it's better to wait too long than to wait too + * little and effectively busy-wait + */ + ms = (ns + SCALE_MS - 1) / SCALE_MS; + + /* To avoid overflow problems, limit this to 2^31, i.e. approx 25 days */ + if (ms > (int64_t) INT32_MAX) { + ms = INT32_MAX; + } + + return (int) ms; +} + +/* qemu implementation of g_poll which uses a nanosecond timeout but is + * otherwise identical to g_poll + */ +int qemu_poll_ns(GPollFD *fds, guint nfds, int64_t timeout) +{ +#ifdef CONFIG_PPOLL + if (timeout < 0) { + return ppoll((struct pollfd *)fds, nfds, NULL, NULL); + } else { + struct timespec ts; + ts.tv_sec = timeout / 1000000000LL; + ts.tv_nsec = timeout % 1000000000LL; + return ppoll((struct pollfd *)fds, nfds, &ts, NULL); + } +#else + return g_poll(fds, nfds, qemu_timeout_ns_to_ms(timeout)); +#endif +} + void init_clocks(void) { QEMUClockType type; -- 1.7.9.5