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

TracyMmap.cpp « server - github.com/wolfpld/tracy.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: bec61a0e0ab8b8b794753386e73a7deb3d553cd7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include "TracyMmap.hpp"

#if defined _WIN32
#  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