psxmem: Add mman wrapper for Win32 and use it for PCSX ReARmed libretro Win32
[pcsx_rearmed.git] / libpcsxcore / memmap.h
diff --git a/libpcsxcore/memmap.h b/libpcsxcore/memmap.h
new file mode 100644 (file)
index 0000000..ad56f04
--- /dev/null
@@ -0,0 +1,56 @@
+#ifndef _MEMMAP_H
+#define _MEMMAP_H
+
+#ifdef _WIN32
+
+#ifndef _WIN32_WINNT            // Allow use of features specific to Windows XP or later.                  
+#define _WIN32_WINNT 0x0501     // Change this to the appropriate value to target other versions of Windows.
+#endif                                          
+
+/* All the headers include this file. */
+#ifndef _MSC_VER
+#include <_mingw.h>
+#endif
+
+#include <sys/types.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define PROT_NONE       0
+#define PROT_READ       1
+#define PROT_WRITE      2
+#define PROT_EXEC       4
+
+#define MAP_FILE        0
+#define MAP_SHARED      1
+#define MAP_PRIVATE     2
+#define MAP_TYPE        0xf
+#define MAP_FIXED       0x10
+#define MAP_ANONYMOUS   0x20
+#define MAP_ANON        MAP_ANONYMOUS
+
+#define MAP_FAILED      ((void *)-1)
+
+/* Flags for msync. */
+#define MS_ASYNC        1
+#define MS_SYNC         2
+#define MS_INVALIDATE   4
+
+void*   mmap(void *addr, size_t len, int prot, int flags, int fildes, off_t off);
+int     munmap(void *addr, size_t len);
+int     mprotect(void *addr, size_t len, int prot);
+int     msync(void *addr, size_t len, int flags);
+int     mlock(const void *addr, size_t len);
+int     munlock(const void *addr, size_t len);
+
+#ifdef __cplusplus
+};
+#endif
+
+#else
+#include <sys/mman.h>
+#endif
+
+#endif