summaryrefslogtreecommitdiff
path: root/db/os_windows/os_fsync.c
diff options
context:
space:
mode:
Diffstat (limited to 'db/os_windows/os_fsync.c')
-rw-r--r--db/os_windows/os_fsync.c38
1 files changed, 38 insertions, 0 deletions
diff --git a/db/os_windows/os_fsync.c b/db/os_windows/os_fsync.c
new file mode 100644
index 000000000..050d68e55
--- /dev/null
+++ b/db/os_windows/os_fsync.c
@@ -0,0 +1,38 @@
+/*-
+ * See the file LICENSE for redistribution information.
+ *
+ * Copyright (c) 1997-2006
+ * Oracle Corporation. All rights reserved.
+ *
+ * $Id: os_fsync.c,v 12.7 2006/08/24 14:46:21 bostic Exp $
+ */
+
+#include "db_config.h"
+
+#include "db_int.h"
+
+/*
+ * __os_fsync --
+ * Flush a file descriptor.
+ */
+int
+__os_fsync(dbenv, fhp)
+ DB_ENV *dbenv;
+ DB_FH *fhp;
+{
+ int ret;
+
+ /*
+ * Do nothing if the file descriptor has been marked as not requiring
+ * any sync to disk.
+ */
+ if (F_ISSET(fhp, DB_FH_NOSYNC))
+ return (0);
+
+ RETRY_CHK((!FlushFileBuffers(fhp->handle)), ret);
+ if (ret != 0) {
+ __db_syserr(dbenv, ret, "FlushFileBuffers");
+ ret = __os_posix_err(ret);
+ }
+ return (ret);
+}