test_fsync.diff
text/x-diff
Patch
Same data as JSON:
GET /api/v1/attachments/:id/patch
the parsed metadata as JSON — format, series position, per-file stats; never the diff bytes.
API reference →
Format: unified
| File | + | − |
|---|---|---|
| contrib/pg_test_fsync/pg_test_fsync.c | 0 | 0 |
diff --git a/contrib/pg_test_fsync/pg_test_fsync.c b/contrib/pg_test_fsync/pg_test_fsync.c
new file mode 100644
index 02a9e21..7f92bc8
*** a/contrib/pg_test_fsync/pg_test_fsync.c
--- b/contrib/pg_test_fsync/pg_test_fsync.c
***************
*** 28,39 ****
--- 28,54 ----
#define OPS_FORMAT "%9.3f ops/sec"
/* These are macros to avoid timing the function call overhead. */
+ #ifndef WIN32
#define START_TIMER \
do { \
alarm_triggered = false; \
alarm(secs_per_test); \
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; \
+ if (CreateThread(NULL, 0, process_alarm, NULL, 0, NULL) == \
+ INVALID_HANDLE_VALUE) \
+ { \
+ fprintf(stderr, "Cannot create thread for alarm\n"); \
+ exit(1); \
+ } \
+ gettimeofday(&start_t, NULL); \
+ } while (0)
+ #endif
#define STOP_TIMER \
do { \
*************** static void test_sync(int writes_per_op)
*** 62,68 ****
--- 77,87 ----
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
*************** main(int argc, char *argv[])
*** 82,88 ****
--- 101,109 ----
/* Prevent leaving behind the test file */
signal(SIGINT, signal_cleanup);
signal(SIGTERM, signal_cleanup);
+ #ifndef WIN32
signal(SIGALRM, process_alarm);
+ #endif
#ifdef SIGHUP
/* Not defined on win32 */
signal(SIGHUP, signal_cleanup);
*************** print_elapse(struct timeval start_t, str
*** 550,560 ****
--- 571,592 ----
printf(OPS_FORMAT "\n", per_second);
}
+ #ifndef WIN32
static void
process_alarm(int sig)
{
alarm_triggered = true;
}
+ #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
die(const char *str)