diff options
author | Bruce Momjian | 2012-02-15 12:10:48 +0000 |
---|---|---|
committer | Bruce Momjian | 2012-02-15 12:10:48 +0000 |
commit | 388c2f93254b90921e207bc1cf52e1c8e0f4bba8 (patch) | |
tree | dbbcc21f803e6cfd2c5e8d757c8fb0f178c0b123 /contrib | |
parent | 7ae2db1d1e7bc95ef8cee380d549dd03a2f8ce88 (diff) |
Fix pg_test_fsync Win32 problems reported by the build farm; add
comments about the alarm method used on Win32.
Diffstat (limited to 'contrib')
-rw-r--r-- | contrib/pg_test_fsync/pg_test_fsync.c | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/contrib/pg_test_fsync/pg_test_fsync.c b/contrib/pg_test_fsync/pg_test_fsync.c index c2867f5892d..7f92bc88182 100644 --- a/contrib/pg_test_fsync/pg_test_fsync.c +++ b/contrib/pg_test_fsync/pg_test_fsync.c @@ -36,6 +36,7 @@ do { \ gettimeofday(&start_t, NULL); \ } while (0) #else +/* WIN32 doesn't support alarm, so we create a thread and sleep there */ #define START_TIMER \ do { \ 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_sync(const char *msg, int writes_size); static void test_file_descriptor_sync(void); +#ifndef WIN32 static void process_alarm(int sig); +#else +static DWORD WINAPI process_alarm(LPVOID param); +#endif static void signal_cleanup(int sig); #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); } +#ifndef WIN32 static void process_alarm(int sig) { -#ifdef WIN32 - sleep(secs_per_test); -#endif alarm_triggered = true; -#ifdef WIN32 +} +#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 } +#endif static void die(const char *str) |