summaryrefslogtreecommitdiff
path: root/src/backend/port/win32_latch.c
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2011-08-09 18:52:29 -0400
committerTom Lane <tgl@sss.pgh.pa.us>2011-08-09 18:52:29 -0400
commit9f17ffd8660243382809b8023ff3d38fbfac4e8b (patch)
treef58c4fa6f2509bb157dcad8ad4223673ed55d383 /src/backend/port/win32_latch.c
parent4e15a4db5e65e43271f8d20750d6500ab12632d0 (diff)
downloadpostgresql-9f17ffd8660243382809b8023ff3d38fbfac4e8b.tar.gz
Measure WaitLatch's timeout parameter in milliseconds, not microseconds.
The original definition had the problem that timeouts exceeding about 2100 seconds couldn't be specified on 32-bit machines. Milliseconds seem like sufficient resolution, and finer grain than that would be fantasy anyway on many platforms. Back-patch to 9.1 so that this aspect of the latch API won't change between 9.1 and later releases. Peter Geoghegan
Diffstat (limited to 'src/backend/port/win32_latch.c')
-rw-r--r--src/backend/port/win32_latch.c10
1 files changed, 3 insertions, 7 deletions
diff --git a/src/backend/port/win32_latch.c b/src/backend/port/win32_latch.c
index eeb85a96ce..10a4006701 100644
--- a/src/backend/port/win32_latch.c
+++ b/src/backend/port/win32_latch.c
@@ -99,7 +99,6 @@ WaitLatchOrSocket(volatile Latch *latch, int wakeEvents, pgsocket sock,
int numevents;
int result = 0;
int pmdeath_eventno = 0;
- long timeout_ms;
/* Ignore WL_SOCKET_* events if no valid socket is given */
if (sock == PGINVALID_SOCKET)
@@ -110,14 +109,11 @@ WaitLatchOrSocket(volatile Latch *latch, int wakeEvents, pgsocket sock,
if ((wakeEvents & WL_LATCH_SET) && latch->owner_pid != MyProcPid)
elog(ERROR, "cannot wait on a latch owned by another process");
- /* Convert timeout to milliseconds for WaitForMultipleObjects() */
+ /* Convert timeout to form used by WaitForMultipleObjects() */
if (wakeEvents & WL_TIMEOUT)
- {
Assert(timeout >= 0);
- timeout_ms = timeout / 1000;
- }
else
- timeout_ms = INFINITE;
+ timeout = INFINITE;
/* Construct an array of event handles for WaitforMultipleObjects() */
latchevent = latch->event;
@@ -165,7 +161,7 @@ WaitLatchOrSocket(volatile Latch *latch, int wakeEvents, pgsocket sock,
break;
}
- rc = WaitForMultipleObjects(numevents, events, FALSE, timeout_ms);
+ rc = WaitForMultipleObjects(numevents, events, FALSE, timeout);
if (rc == WAIT_FAILED)
elog(ERROR, "WaitForMultipleObjects() failed: error code %d", (int) GetLastError());