|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [qemu-upstream-unstable] main loop: use msec-based timeout in glib_select_fill
commit 3e21865189962186876483ea1fada46d11818df0
Author: Paolo Bonzini <pbonzini@xxxxxxxxxx>
Date: Tue Mar 20 10:49:17 2012 +0100
main loop: use msec-based timeout in glib_select_fill
The timeval-based timeout is not needed until we actually invoke select,
so compute it only then. Also group the two calls that modify the
timeout, glib_select_fill and os_host_main_loop_wait.
upstream-commit: 4dae83aeac63863af6b59f58552da68b35b1a40d
Signed-off-by: Paolo Bonzini <pbonzini@xxxxxxxxxx>
Signed-off-by: Blue Swirl <blauwirbel@xxxxxxxxx>
---
main-loop.c | 16 +++++++---------
1 files changed, 7 insertions(+), 9 deletions(-)
diff --git a/main-loop.c b/main-loop.c
index b0f1a04..7cb4d71 100644
--- a/main-loop.c
+++ b/main-loop.c
@@ -223,11 +223,11 @@ static int n_poll_fds;
static int max_priority;
static void glib_select_fill(int *max_fd, fd_set *rfds, fd_set *wfds,
- fd_set *xfds, struct timeval *tv)
+ fd_set *xfds, uint32_t *cur_timeout)
{
GMainContext *context = g_main_context_default();
int i;
- int timeout = 0, cur_timeout;
+ int timeout = 0;
g_main_context_prepare(context, &max_priority);
@@ -252,10 +252,8 @@ static void glib_select_fill(int *max_fd, fd_set *rfds,
fd_set *wfds,
}
}
- cur_timeout = (tv->tv_sec * 1000) + ((tv->tv_usec + 500) / 1000);
- if (timeout >= 0 && timeout < cur_timeout) {
- tv->tv_sec = timeout / 1000;
- tv->tv_usec = (timeout % 1000) * 1000;
+ if (timeout >= 0 && timeout < *cur_timeout) {
+ *cur_timeout = timeout;
}
}
@@ -430,8 +428,6 @@ int main_loop_wait(int nonblocking)
qemu_bh_update_timeout(&timeout);
}
- os_host_main_loop_wait(&timeout);
-
/* poll any events */
/* XXX: separate device handlers from system ones */
nfds = -1;
@@ -444,7 +440,9 @@ int main_loop_wait(int nonblocking)
slirp_select_fill(&nfds, &rfds, &wfds, &xfds);
#endif
qemu_iohandler_fill(&nfds, &rfds, &wfds, &xfds);
- glib_select_fill(&nfds, &rfds, &wfds, &xfds, &tv);
+
+ glib_select_fill(&nfds, &rfds, &wfds, &xfds, &timeout);
+ os_host_main_loop_wait(&timeout);
if (timeout < UINT32_MAX) {
tvarg = &tv;
--
generated by git-patchbot for /home/xen/git/qemu-upstream-unstable.git
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |