From 8c2507991f5ed2451921e960a9de6dc01d1ffa67 Mon Sep 17 00:00:00 2001 From: SeokYeon Hwang Date: Sun, 30 Aug 2015 16:39:30 +0900 Subject: [PATCH] Revert "timer: fix qemu_poll_ns early timeout on windows" This reverts commit b611841324d3d95b8f0adbaf22a27d53cd83b858. Same commit applied in upstream in diffent way as a commit 5a007547df76446ab891df93ebc55749716609bf. Change-Id: I6eedc7f56f3a1f6ef79e39f1b47acf74cd6bdf92 Signed-off-by: SeokYeon Hwang --- qemu-timer.c | 91 ------------------------------------------------------------ 1 file changed, 91 deletions(-) diff --git a/qemu-timer.c b/qemu-timer.c index 9bc4bd5..2463fe6 100644 --- a/qemu-timer.c +++ b/qemu-timer.c @@ -321,97 +321,6 @@ int qemu_poll_ns(GPollFD *fds, guint nfds, int64_t timeout) ts.tv_nsec = timeout % 1000000000LL; return ppoll((struct pollfd *)fds, nfds, &ts, NULL); } -#elif defined(_WIN32) - guint i; - HANDLE handles[MAXIMUM_WAIT_OBJECTS]; - gint nhandles = 0; - int num_completed = 0; - gint timeout_ms = qemu_timeout_ns_to_ms(timeout); - - for (i = 0; i < nfds; i++) { - gint j; - - if (fds[i].fd <= 0) { - continue; - } - - /* don't add same handle several times - */ - for (j = 0; j < nhandles; j++) { - if (handles[j] == (HANDLE)fds[i].fd) { - break; - } - } - - if (j == nhandles) { - if (nhandles == MAXIMUM_WAIT_OBJECTS) { - fprintf(stderr, "Too many handles to wait for!\n"); - break; - } else { - handles[nhandles++] = (HANDLE)fds[i].fd; - } - } - } - - for (i = 0; i < nfds; ++i) { - fds[i].revents = 0; - } - - if (timeout_ms == -1) { - timeout_ms = INFINITE; - } - - if (nhandles == 0) { - if (timeout_ms == INFINITE) { - return -1; - } else { - SleepEx(timeout_ms, TRUE); - return 0; - } - } - - while (1) { - DWORD res; - gint j; - - res = WaitForMultipleObjectsEx(nhandles, handles, FALSE, - timeout_ms, TRUE); - - if (res == WAIT_FAILED) { - for (i = 0; i < nfds; ++i) { - fds[i].revents = 0; - } - - return -1; - } else if ((res == WAIT_TIMEOUT) || (res == WAIT_IO_COMPLETION) || - ((int)res < WAIT_OBJECT_0) || - (res >= (WAIT_OBJECT_0 + nhandles))) { - break; - } - - for (i = 0; i < nfds; ++i) { - if (handles[res - WAIT_OBJECT_0] == (HANDLE)fds[i].fd) { - fds[i].revents = fds[i].events; - } - } - - ++num_completed; - - if (nhandles <= 1) { - break; - } - - /* poll the rest of the handles - */ - for (j = res - WAIT_OBJECT_0 + 1; j < nhandles; j++) { - handles[j - 1] = handles[j]; - } - --nhandles; - - timeout_ms = 0; - } - - return num_completed; #else return g_poll(fds, nfds, qemu_timeout_ns_to_ms(timeout)); #endif -- 2.7.4