aboutsummaryrefslogtreecommitdiff
path: root/src/backend/port/unix_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/unix_latch.c
parent4e15a4db5e65e43271f8d20750d6500ab12632d0 (diff)
downloadpostgresql-9f17ffd8660243382809b8023ff3d38fbfac4e8b.tar.gz
postgresql-9f17ffd8660243382809b8023ff3d38fbfac4e8b.zip
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/unix_latch.c')
-rw-r--r--src/backend/port/unix_latch.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/src/backend/port/unix_latch.c b/src/backend/port/unix_latch.c
index 950a3a40117..ff4ed8f16cf 100644
--- a/src/backend/port/unix_latch.c
+++ b/src/backend/port/unix_latch.c
@@ -137,7 +137,7 @@ DisownLatch(volatile Latch *latch)
* to wait for. If the latch is already set (and WL_LATCH_SET is given), the
* function returns immediately.
*
- * The 'timeout' is given in microseconds. It must be >= 0 if WL_TIMEOUT flag
+ * The 'timeout' is given in milliseconds. It must be >= 0 if WL_TIMEOUT flag
* is given. On some platforms, signals cause the timeout to be restarted,
* so beware that the function can sleep for several times longer than the
* specified timeout.
@@ -156,6 +156,7 @@ DisownLatch(volatile Latch *latch)
* have been satisfied. That should be rare in practice, but the caller
* should not use the return value for anything critical, re-checking the
* situation with PostmasterIsAlive() or read() on a socket as necessary.
+ * The latch and timeout flag bits can be trusted, however.
*/
int
WaitLatch(volatile Latch *latch, int wakeEvents, long timeout)
@@ -191,8 +192,8 @@ WaitLatchOrSocket(volatile Latch *latch, int wakeEvents, pgsocket sock,
if (wakeEvents & WL_TIMEOUT)
{
Assert(timeout >= 0);
- tv.tv_sec = timeout / 1000000L;
- tv.tv_usec = timeout % 1000000L;
+ tv.tv_sec = timeout / 1000L;
+ tv.tv_usec = (timeout % 1000L) * 1000L;
tvp = &tv;
}