]> granicus.if.org Git - postgresql/commitdiff
Change PG_DELAY from msec to usec and use it consistenly rather than
authorBruce Momjian <bruce@momjian.us>
Fri, 9 Jan 2004 21:08:50 +0000 (21:08 +0000)
committerBruce Momjian <bruce@momjian.us>
Fri, 9 Jan 2004 21:08:50 +0000 (21:08 +0000)
select().   Add Win32 Sleep() for delay.

src/backend/access/transam/xact.c
src/backend/storage/buffer/bufmgr.c
src/backend/storage/lmgr/s_lock.c
src/include/miscadmin.h

index c7725b0f6218ebafe2436e51d96d6ce2d23f0991..56ecf9d2f43d9c38057ed4f883a892c244a379c0 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *       $PostgreSQL: pgsql/src/backend/access/transam/xact.c,v 1.159 2004/01/07 18:56:24 neilc Exp $
+ *       $PostgreSQL: pgsql/src/backend/access/transam/xact.c,v 1.160 2004/01/09 21:08:46 momjian Exp $
  *
  * NOTES
  *             Transaction aborts can now occur two ways:
@@ -561,13 +561,7 @@ RecordTransactionCommit(void)
                         */
                        if (CommitDelay > 0 && enableFsync &&
                                CountActiveBackends() >= CommitSiblings)
-                       {
-                               struct timeval delay;
-
-                               delay.tv_sec = 0;
-                               delay.tv_usec = CommitDelay;
-                               (void) select(0, NULL, NULL, NULL, &delay);
-                       }
+                               PG_USLEEP(CommitDelay);
 
                        XLogFlush(recptr);
                }
index 285617678a1b3a9e6a92c69f6f59943f3f00ba79..64c5800dc494ecb9c0a309c63f68c357ada9cf89 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *       $PostgreSQL: pgsql/src/backend/storage/buffer/bufmgr.c,v 1.151 2004/01/07 18:56:27 neilc Exp $
+ *       $PostgreSQL: pgsql/src/backend/storage/buffer/bufmgr.c,v 1.152 2004/01/09 21:08:49 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -1031,9 +1031,7 @@ BufferBackgroundWriter(void)
                 * there was nothing to do at all.
                 */
                if (n > 0)
-               {
-                       PG_DELAY(BgWriterDelay);
-               }
+                       PG_USLEEP(BgWriterDelay * 1000);
                else
                        sleep(10);
        }
index fac77aef0afac92b28209a4b0142c78e88ec7b73..85d1a16516ac9c38635b27617ca5a8ea2f555100 100644 (file)
@@ -9,7 +9,7 @@
  *
  *
  * IDENTIFICATION
- *       $PostgreSQL: pgsql/src/backend/storage/lmgr/s_lock.c,v 1.23 2003/12/27 20:58:58 tgl Exp $
+ *       $PostgreSQL: pgsql/src/backend/storage/lmgr/s_lock.c,v 1.24 2004/01/09 21:08:49 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -19,7 +19,7 @@
 #include <unistd.h>
 
 #include "storage/s_lock.h"
-
+#include "miscadmin.h"
 
 /*
  * s_lock_stuck() - complain about a stuck spinlock
@@ -84,7 +84,6 @@ s_lock(volatile slock_t *lock, const char *file, int line)
        int                     spins = 0;
        int                     delays = 0;
        int                     cur_delay = MIN_DELAY_CSEC;
-       struct timeval delay;
 
        while (TAS(lock))
        {
@@ -97,9 +96,7 @@ s_lock(volatile slock_t *lock, const char *file, int line)
                        if (++delays > NUM_DELAYS)
                                s_lock_stuck(lock, file, line);
 
-                       delay.tv_sec = cur_delay / 100;
-                       delay.tv_usec = (cur_delay % 100) * 10000;
-                       (void) select(0, NULL, NULL, NULL, &delay);
+                       PG_USLEEP(cur_delay * 10000);
 
 #if defined(S_LOCK_TEST)
                        fprintf(stdout, "*");
index e502a154bbfa98aa4c84208355082b77b0f79b75..9b7bb20112d0c9854d792bd80a602d590900d115 100644 (file)
@@ -12,7 +12,7 @@
  * Portions Copyright (c) 1996-2003, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $PostgreSQL: pgsql/src/include/miscadmin.h,v 1.142 2004/01/06 23:15:22 momjian Exp $
+ * $PostgreSQL: pgsql/src/include/miscadmin.h,v 1.143 2004/01/09 21:08:50 momjian Exp $
  *
  * NOTES
  *       some of the information in this file should be moved to
@@ -75,34 +75,40 @@ extern volatile uint32 CritSectionCount;
 extern void ProcessInterrupts(void);
 
 #define CHECK_FOR_INTERRUPTS() \
-       do { \
-               if (InterruptPending) \
-                       ProcessInterrupts(); \
-       } while(0)
+do { \
+       if (InterruptPending) \
+               ProcessInterrupts(); \
+} while(0)
 
 #define HOLD_INTERRUPTS()  (InterruptHoldoffCount++)
 
 #define RESUME_INTERRUPTS() \
-       do { \
-               Assert(InterruptHoldoffCount > 0); \
-               InterruptHoldoffCount--; \
-       } while(0)
+do { \
+       Assert(InterruptHoldoffCount > 0); \
+       InterruptHoldoffCount--; \
+} while(0)
 
 #define START_CRIT_SECTION()  (CritSectionCount++)
 
 #define END_CRIT_SECTION() \
-       do { \
-               Assert(CritSectionCount > 0); \
-               CritSectionCount--; \
-       } while(0)
-
-#define PG_DELAY(_msec) \
-{ \
+do { \
+       Assert(CritSectionCount > 0); \
+       CritSectionCount--; \
+} while(0)
+
+#define PG_USLEEP(_usec) \
+do { \
+#ifndef WIN32
+       /* This will overflow on systems with 32-bit ints for > ~2000 secs */ \
        struct timeval delay; \
-       delay.tv_sec = (_msec) / 1000; \
-       delay.tv_usec = ((_msec) % 1000) * 1000; \
+       \
+       delay.tv_sec = (_usec) / 1000000; \
+       delay.tv_usec = ((_usec) % 1000000); \
        (void) select(0, NULL, NULL, NULL, &delay); \
-}
+#else
+       Sleep(_usec < 500) ? 1 : (_usec+500)/ 1000);
+#endif
+} while(0)
 
 /*****************************************************************************
  *       globals.h --                                                                                                                   *