Change PG_DELAY from msec to usec and use it consistenly rather than
authorBruce Momjian
Fri, 9 Jan 2004 21:08:50 +0000 (21:08 +0000)
committerBruce Momjian
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 
 
 #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 --                                                           *