diff options
| author | Tom Lane <tgl@sss.pgh.pa.us> | 2011-08-09 18:52:29 -0400 |
|---|---|---|
| committer | Tom Lane <tgl@sss.pgh.pa.us> | 2011-08-09 18:52:29 -0400 |
| commit | 9f17ffd8660243382809b8023ff3d38fbfac4e8b (patch) | |
| tree | f58c4fa6f2509bb157dcad8ad4223673ed55d383 /src/backend/port/win32_latch.c | |
| parent | 4e15a4db5e65e43271f8d20750d6500ab12632d0 (diff) | |
| download | postgresql-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.c | 10 |
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()); |
