Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/wolfpld/tracy.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBartosz Taudul <wolf.pld@gmail.com>2020-02-12 21:22:46 +0300
committerBartosz Taudul <wolf.pld@gmail.com>2020-02-12 21:24:30 +0300
commitcc805b7b7437e5cefcbb6e071633f5a47b8963a3 (patch)
tree5b0f802d0540b18aa6da1fbd8b7f21329ccd4ed8 /server/TracyMmap.cpp
parentfa1747bdb22e56d21dc14424baa5fc88ba7a39ec (diff)
Add mmap() wrapper.
Diffstat (limited to 'server/TracyMmap.cpp')
-rw-r--r--server/TracyMmap.cpp38
1 files changed, 38 insertions, 0 deletions
diff --git a/server/TracyMmap.cpp b/server/TracyMmap.cpp
new file mode 100644
index 00000000..29b06e48
--- /dev/null
+++ b/server/TracyMmap.cpp
@@ -0,0 +1,38 @@
+#include "TracyMmap.hpp"
+
+#if defined _MSC_VER || defined __MINGW32__ || defined __CYGWIN__
+# include <io.h>
+# include <windows.h>
+
+void* mmap( void* addr, size_t length, int prot, int flags, int fd, off_t offset )
+{
+ HANDLE hnd;
+ void* map = nullptr;
+
+ switch( prot )
+ {
+ case PROT_READ:
+ if( hnd = CreateFileMapping( HANDLE( _get_osfhandle( fd ) ), nullptr, PAGE_READONLY, 0, 0, nullptr ) )
+ {
+ map = MapViewOfFile( hnd, FILE_MAP_READ, 0, 0, length );
+ CloseHandle( hnd );
+ }
+ break;
+ case PROT_WRITE:
+ if( hnd = CreateFileMapping( HANDLE( _get_osfhandle( fd ) ), nullptr, PAGE_READWRITE, 0, 0, nullptr ) )
+ {
+ map = MapViewOfFile( hnd, FILE_MAP_WRITE, 0, 0, length );
+ CloseHandle( hnd );
+ }
+ break;
+ }
+
+ return map ? (char*)map + offset : (void*)-1;
+}
+
+int munmap( void* addr, size_t length )
+{
+ return UnmapViewOfFile( addr ) != 0 ? 0 : -1;
+}
+
+#endif