diff options
author | Olivier Bertrand <bertrandop@gmail.com> | 2013-03-08 00:41:24 +0100 |
---|---|---|
committer | Olivier Bertrand <bertrandop@gmail.com> | 2013-03-08 00:41:24 +0100 |
commit | 07beddc421070bd9ed0ec5ebc314b13c78dacd96 (patch) | |
tree | fc0135b5782df79759023af7b965e2d1723433d9 /storage/connect/maputil.cpp | |
parent | 079f053c66bb91c8c23212e52ee90dc9973978fb (diff) | |
parent | 274b2f8c4afaa1e78a6399e757844eb1b3b1cd4a (diff) | |
download | mariadb-git-07beddc421070bd9ed0ec5ebc314b13c78dacd96.tar.gz |
- Working on the problem of writing to mapped files on Linux
modified:
storage/connect/maputil.cpp*
Diffstat (limited to 'storage/connect/maputil.cpp')
-rwxr-xr-x[-rw-r--r--] | storage/connect/maputil.cpp | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/storage/connect/maputil.cpp b/storage/connect/maputil.cpp index 2b542d9b359..69ab2fad87f 100644..100755 --- a/storage/connect/maputil.cpp +++ b/storage/connect/maputil.cpp @@ -133,7 +133,7 @@ HANDLE CreateFileMap(PGLOBAL g, LPCSTR fileName, case MODE_UPDATE: case MODE_DELETE: openMode = (del) ? (O_RDWR | O_TRUNC) : O_RDWR; - protmode = PROT_WRITE; + protmode = PROT_READ | PROT_WRITE; break; case MODE_INSERT: openMode = (O_WRONLY | O_CREAT | O_APPEND); @@ -167,15 +167,23 @@ HANDLE CreateFileMap(PGLOBAL g, LPCSTR fileName, } else { strcpy(g->Message, "Memory mapping failed"); return INVALID_HANDLE_VALUE; + } // endif memory + } /* endif fd */ - // mmap() call was successful. ?????????? - return fd; + // mmap() call was successful. ?????????? + return fd; } // end of CreateFileMap bool CloseMemMap(void *memory, size_t dwSize) { - return (memory) ? ((munmap(memory, dwSize)) ? true : false) : false; + if (memory) { + // All this must be redesigned + int rc = msync(memory, dwSize, MS_SYNC); + return (munmap(memory, dwSize)) ? true : false; + } else + return false; + } // end of CloseMemMap #endif // UNIX |