From c74f074c6dd44e446a7c0ea23eb7762ad2b4f83d Mon Sep 17 00:00:00 2001 From: George Zhao Date: Wed, 28 Mar 2018 10:59:59 +0800 Subject: [PATCH 1/2] React PREFIX to other variables in configure --- configure | 3 +++ 1 file changed, 3 insertions(+) diff --git a/configure b/configure index b3c6c19..09a3109 100644 --- a/configure +++ b/configure @@ -87,6 +87,9 @@ for opt do ;; --prefix=*) PREFIX="$optval" + bindir="${PREFIX}/bin" + libdir="${PREFIX}/lib" + incdir="${PREFIX}/include/sys" ;; --libdir=*) libdir="$optval" From d472efac0f55bcf33fc6b8a1a761642ffc0a4be7 Mon Sep 17 00:00:00 2001 From: George Zhao Date: Wed, 28 Mar 2018 11:00:45 +0800 Subject: [PATCH 2/2] Fix warning about -Wattributes --- mman.c | 58 ++++++++++++++++++++++++++++++++-------------------------- 1 file changed, 32 insertions(+), 26 deletions(-) diff --git a/mman.c b/mman.c index 9a2df41..d57d2a7 100644 --- a/mman.c +++ b/mman.c @@ -20,13 +20,13 @@ static int __map_mman_error(const DWORD err, const int deferr) static DWORD __map_mmap_prot_page(const int prot) { DWORD protect = 0; - + if (prot == PROT_NONE) return protect; - + if ((prot & PROT_EXEC) != 0) { - protect = ((prot & PROT_WRITE) != 0) ? + protect = ((prot & PROT_WRITE) != 0) ? PAGE_EXECUTE_READWRITE : PAGE_EXECUTE_READ; } else @@ -34,33 +34,34 @@ static DWORD __map_mmap_prot_page(const int prot) protect = ((prot & PROT_WRITE) != 0) ? PAGE_READWRITE : PAGE_READONLY; } - + return protect; } static DWORD __map_mmap_prot_file(const int prot) { DWORD desiredAccess = 0; - + if (prot == PROT_NONE) return desiredAccess; - + if ((prot & PROT_READ) != 0) desiredAccess |= FILE_MAP_READ; if ((prot & PROT_WRITE) != 0) desiredAccess |= FILE_MAP_WRITE; if ((prot & PROT_EXEC) != 0) desiredAccess |= FILE_MAP_EXECUTE; - + return desiredAccess; } +MMANSHARED_EXPORT void* mmap(void *addr, size_t len, int prot, int flags, int fildes, OffsetType off) { HANDLE fm, h; - + void * map = MAP_FAILED; - + #ifdef _MSC_VER #pragma warning(push) #pragma warning(disable: 4293) @@ -85,8 +86,8 @@ void* mmap(void *addr, size_t len, int prot, int flags, int fildes, OffsetType o #endif errno = 0; - - if (len == 0 + + if (len == 0 /* Unsupported flag combinations */ || (flags & MAP_FIXED) != 0 /* Usupported protection combinations */ @@ -95,8 +96,8 @@ void* mmap(void *addr, size_t len, int prot, int flags, int fildes, OffsetType o errno = EINVAL; return MAP_FAILED; } - - h = ((flags & MAP_ANONYMOUS) == 0) ? + + h = ((flags & MAP_ANONYMOUS) == 0) ? (HANDLE)_get_osfhandle(fildes) : INVALID_HANDLE_VALUE; if ((flags & MAP_ANONYMOUS) == 0 && h == INVALID_HANDLE_VALUE) @@ -112,11 +113,11 @@ void* mmap(void *addr, size_t len, int prot, int flags, int fildes, OffsetType o errno = __map_mman_error(GetLastError(), EPERM); return MAP_FAILED; } - + map = MapViewOfFile(fm, desiredAccess, dwFileOffsetHigh, dwFileOffsetLow, len); CloseHandle(fm); - + if (map == NULL) { errno = __map_mman_error(GetLastError(), EPERM); @@ -126,55 +127,60 @@ void* mmap(void *addr, size_t len, int prot, int flags, int fildes, OffsetType o return map; } +MMANSHARED_EXPORT int munmap(void *addr, size_t len) { if (UnmapViewOfFile(addr)) return 0; - + errno = __map_mman_error(GetLastError(), EPERM); - + return -1; } +MMANSHARED_EXPORT int _mprotect(void *addr, size_t len, int prot) { DWORD newProtect = __map_mmap_prot_page(prot); DWORD oldProtect = 0; - + if (VirtualProtect(addr, len, newProtect, &oldProtect)) return 0; - + errno = __map_mman_error(GetLastError(), EPERM); - + return -1; } +MMANSHARED_EXPORT int msync(void *addr, size_t len, int flags) { if (FlushViewOfFile(addr, len)) return 0; - + errno = __map_mman_error(GetLastError(), EPERM); - + return -1; } +MMANSHARED_EXPORT int mlock(const void *addr, size_t len) { if (VirtualLock((LPVOID)addr, len)) return 0; - + errno = __map_mman_error(GetLastError(), EPERM); - + return -1; } +MMANSHARED_EXPORT int munlock(const void *addr, size_t len) { if (VirtualUnlock((LPVOID)addr, len)) return 0; - + errno = __map_mman_error(GetLastError(), EPERM); - + return -1; }