Round microseconds on setitimer upwards.
authorBruce Momjian <bruce@momjian.us>
Wed, 9 Aug 2006 21:18:15 +0000 (21:18 +0000)
committerBruce Momjian <bruce@momjian.us>
Wed, 9 Aug 2006 21:18:15 +0000 (21:18 +0000)
src/backend/port/win32/timer.c

index 048bebb058d99dbf3d738bbc36ab9d6475ea233b..62b910565265541cb8e4a9e1a674ab7384933c1e 100644 (file)
@@ -57,12 +57,9 @@ pg_timer_thread(LPVOID param)
                                waittime = INFINITE;    /* Cancel the interrupt */
                        else
                        {
-                               /* Minimum wait time is 1ms */
-                               if (timerCommArea.value.it_value.tv_sec == 0 &&
-                                       timerCommArea.value.it_value.tv_usec < 1000)
-                                       timerCommArea.value.it_value.tv_usec = 1000;
-                               /* WaitForSingleObjectEx() uses milliseconds */
-                               waittime = timerCommArea.value.it_value.tv_usec / 1000 + timerCommArea.value.it_value.tv_sec * 1000;
+                               /* WaitForSingleObjectEx() uses milliseconds, round up */
+                               waittime = (timerCommArea.value.it_value.tv_usec + 999) / 1000 +
+                                                  timerCommArea.value.it_value.tv_sec * 1000;
                        }
                        ResetEvent(timerCommArea.event);
                        LeaveCriticalSection(&timerCommArea.crit_sec);