From: Bruce Momjian Date: Wed, 9 Aug 2006 20:40:56 +0000 (+0000) Subject: On Win32, make minimum setitimer() sleep be 1ms, so sleeps < 1ms aren't X-Git-Tag: REL8_2_BETA1~357 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=0553a0507cd466926cc6902a5c6cf35f920c1e67;p=thirdparty%2Fpostgresql.git On Win32, make minimum setitimer() sleep be 1ms, so sleeps < 1ms aren't rounded down to zero. Backpatch to 8.1.X. --- diff --git a/src/backend/port/win32/timer.c b/src/backend/port/win32/timer.c index 0a38f00858e..88d4b6d5857 100644 --- a/src/backend/port/win32/timer.c +++ b/src/backend/port/win32/timer.c @@ -11,7 +11,7 @@ * Portions Copyright (c) 1996-2006, PostgreSQL Global Development Group * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/port/win32/timer.c,v 1.10 2006/08/09 17:47:03 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/port/win32/timer.c,v 1.11 2006/08/09 20:40:56 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -56,8 +56,14 @@ pg_timer_thread(LPVOID param) timerCommArea.value.it_value.tv_usec == 0) 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; + } ResetEvent(timerCommArea.event); LeaveCriticalSection(&timerCommArea.crit_sec); }