]> sourceware.org Git - newlib-cygwin.git/commitdiff
* mmap.cc (handler_disk_file::msync): Add call to FlushFileBuffers
authorCorinna Vinschen <corinna@vinschen.de>
Fri, 18 Jan 2013 09:35:05 +0000 (09:35 +0000)
committerCorinna Vinschen <corinna@vinschen.de>
Fri, 18 Jan 2013 09:35:05 +0000 (09:35 +0000)
to implement MS_SYNC.

winsup/cygwin/ChangeLog
winsup/cygwin/mmap.cc

index 9920d98e4413c0aaec7d50a08b19077d00e5182d..f75aa354c59e89a119f63af977f951238513f2d6 100644 (file)
@@ -1,3 +1,8 @@
+2013-01-18  Christopher Faylor  <me.cygwin2013@cgf.cx>
+
+       * mmap.cc (handler_disk_file::msync): Add call to FlushFileBuffers
+       to implement MS_SYNC.
+
 2013-01-17  Christopher Faylor  <me.cygwin2013@cgf.cx>
 
        * mmap.cc (handler_disk_file::msync): Retry up to 99 times if
index 0ede7e6ab88ec8cc61e405b0c8583847c7a05ff5..da89d9d81ba0354de8ac5c0184b37d872ce57081 100644 (file)
@@ -1664,7 +1664,14 @@ fhandler_disk_file::msync (HANDLE h, caddr_t addr, size_t len, int flags)
      cygwin list.  So retry 99 times and hope we get lucky.  */
   for (int i = 0; i < retry; i++)
     if (FlushViewOfFile (addr, len))
-      return 0;
+      {
+       /* FlushViewOfFile just triggers the action and returns immediately,
+          so it's equivalent to MS_ASYNC.  MS_SYNC requires another call to
+          FlushFileBuffers. */
+       if (flags & MS_SYNC)
+         FlushFileBuffers (h);
+       return 0;
+      }
     else if (GetLastError () != ERROR_LOCK_VIOLATION)
       break;
     else if (i < (retry - 1))
This page took 0.036026 seconds and 5 git commands to generate.