From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:49781) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WIICy-0004Fi-KN for qemu-devel@nongnu.org; Tue, 25 Feb 2014 08:38:13 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1WIICl-0004jv-VG for qemu-devel@nongnu.org; Tue, 25 Feb 2014 08:38:04 -0500 Received: from mail-pa0-x236.google.com ([2607:f8b0:400e:c03::236]:36815) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WIICl-0004ji-P1 for qemu-devel@nongnu.org; Tue, 25 Feb 2014 08:37:51 -0500 Received: by mail-pa0-f54.google.com with SMTP id fa1so8081519pad.13 for ; Tue, 25 Feb 2014 05:37:50 -0800 (PST) From: Xuebing Wang Date: Tue, 25 Feb 2014 21:36:53 +0800 Message-Id: <1393335414-27589-7-git-send-email-xbing6@gmail.com> In-Reply-To: <1393335414-27589-1-git-send-email-xbing6@gmail.com> References: <1393335414-27589-1-git-send-email-xbing6@gmail.com> Subject: [Qemu-devel] [PATCH 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 Cc: pbonzini@redhat.com, xbing6@gmail.com, stefanha@redhat.com, alex@alex.org.uk Signed-off-by: Xuebing Wang --- 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