diff options
author | Bruce Momjian <bruce@momjian.us> | 2006-08-09 20:41:07 +0000 |
---|---|---|
committer | Bruce Momjian <bruce@momjian.us> | 2006-08-09 20:41:07 +0000 |
commit | 83b27b918033cc011b65d80a0fbbc82516078931 (patch) | |
tree | 03144bcc3992c220f791a6bcbf13dd5040ec525e | |
parent | 1e35f9aa048183ecf18227e5a4cb08c64693e645 (diff) | |
download | postgresql-83b27b918033cc011b65d80a0fbbc82516078931.tar.gz |
On Win32, make minimum setitimer() sleep be 1ms, so sleeps < 1ms aren't
rounded down to zero.
Backpatch to 8.1.X.
-rw-r--r-- | src/backend/port/win32/timer.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/src/backend/port/win32/timer.c b/src/backend/port/win32/timer.c index 262edda72b..aa945ffcef 100644 --- a/src/backend/port/win32/timer.c +++ b/src/backend/port/win32/timer.c @@ -11,7 +11,7 @@ * Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/port/win32/timer.c,v 1.6.2.2 2006/08/09 17:47:06 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/port/win32/timer.c,v 1.6.2.3 2006/08/09 20:41:07 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); } |