Fix pg_test_fsync Win32 problems reported by the build farm; add

comments about the alarm method used on Win32.
This commit is contained in:
Bruce Momjian 2012-02-15 07:10:48 -05:00
parent 7ae2db1d1e
commit 388c2f9325
1 changed files with 16 additions and 6 deletions

View File

@ -36,6 +36,7 @@ do { \
gettimeofday(&start_t, NULL); \ gettimeofday(&start_t, NULL); \
} while (0) } while (0)
#else #else
/* WIN32 doesn't support alarm, so we create a thread and sleep there */
#define START_TIMER \ #define START_TIMER \
do { \ do { \
alarm_triggered = false; \ alarm_triggered = false; \
@ -76,7 +77,11 @@ static void test_sync(int writes_per_op);
static void test_open_syncs(void); static void test_open_syncs(void);
static void test_open_sync(const char *msg, int writes_size); static void test_open_sync(const char *msg, int writes_size);
static void test_file_descriptor_sync(void); static void test_file_descriptor_sync(void);
#ifndef WIN32
static void process_alarm(int sig); static void process_alarm(int sig);
#else
static DWORD WINAPI process_alarm(LPVOID param);
#endif
static void signal_cleanup(int sig); static void signal_cleanup(int sig);
#ifdef HAVE_FSYNC_WRITETHROUGH #ifdef HAVE_FSYNC_WRITETHROUGH
@ -566,17 +571,22 @@ print_elapse(struct timeval start_t, struct timeval stop_t, int ops)
printf(OPS_FORMAT "\n", per_second); printf(OPS_FORMAT "\n", per_second);
} }
#ifndef WIN32
static void static void
process_alarm(int sig) process_alarm(int sig)
{ {
#ifdef WIN32
sleep(secs_per_test);
#endif
alarm_triggered = true; alarm_triggered = true;
#ifdef WIN32
ExitThread(0);
#endif
} }
#else
static DWORD WINAPI
process_alarm(LPVOID param)
{
/* WIN32 doesn't support alarm, so we create a thread and sleep here */
Sleep(secs_per_test * 1000);
alarm_triggered = true;
ExitThread(0);
}
#endif
static void static void
die(const char *str) die(const char *str)