xref: /netbsd-src/sys/external/bsd/compiler_rt/dist/lib/profile/WindowsMMap.h (revision ef84fd3bd8895f4e6be1e38baf19e6dc3255bc64)
1*ef84fd3bSjoerg /*===- WindowsMMap.h - Support library for PGO instrumentation ------------===*\
2*ef84fd3bSjoerg |*
3*ef84fd3bSjoerg |*                     The LLVM Compiler Infrastructure
4*ef84fd3bSjoerg |*
5*ef84fd3bSjoerg |* This file is distributed under the University of Illinois Open Source
6*ef84fd3bSjoerg |* License. See LICENSE.TXT for details.
7*ef84fd3bSjoerg |*
8*ef84fd3bSjoerg \*===----------------------------------------------------------------------===*/
9*ef84fd3bSjoerg 
10*ef84fd3bSjoerg #ifndef PROFILE_INSTRPROFILING_WINDOWS_MMAP_H
11*ef84fd3bSjoerg #define PROFILE_INSTRPROFILING_WINDOWS_MMAP_H
12*ef84fd3bSjoerg 
13*ef84fd3bSjoerg #if defined(_WIN32)
14*ef84fd3bSjoerg 
15*ef84fd3bSjoerg #include <BaseTsd.h>
16*ef84fd3bSjoerg #include <io.h>
17*ef84fd3bSjoerg #include <sys/types.h>
18*ef84fd3bSjoerg 
19*ef84fd3bSjoerg /*
20*ef84fd3bSjoerg  * mmap() flags
21*ef84fd3bSjoerg  */
22*ef84fd3bSjoerg #define PROT_READ     0x1
23*ef84fd3bSjoerg #define PROT_WRITE    0x2
24*ef84fd3bSjoerg /* This flag is only available in WinXP+ */
25*ef84fd3bSjoerg #ifdef FILE_MAP_EXECUTE
26*ef84fd3bSjoerg #define PROT_EXEC     0x4
27*ef84fd3bSjoerg #else
28*ef84fd3bSjoerg #define PROT_EXEC        0x0
29*ef84fd3bSjoerg #define FILE_MAP_EXECUTE 0
30*ef84fd3bSjoerg #endif
31*ef84fd3bSjoerg 
32*ef84fd3bSjoerg #define MAP_FILE      0x00
33*ef84fd3bSjoerg #define MAP_SHARED    0x01
34*ef84fd3bSjoerg #define MAP_PRIVATE   0x02
35*ef84fd3bSjoerg #define MAP_ANONYMOUS 0x20
36*ef84fd3bSjoerg #define MAP_ANON      MAP_ANONYMOUS
37*ef84fd3bSjoerg #define MAP_FAILED    ((void *) -1)
38*ef84fd3bSjoerg 
39*ef84fd3bSjoerg /*
40*ef84fd3bSjoerg  * msync() flags
41*ef84fd3bSjoerg  */
42*ef84fd3bSjoerg #define MS_ASYNC        0x0001  /* return immediately */
43*ef84fd3bSjoerg #define MS_INVALIDATE   0x0002  /* invalidate all cached data */
44*ef84fd3bSjoerg #define MS_SYNC         0x0010  /* msync synchronously */
45*ef84fd3bSjoerg 
46*ef84fd3bSjoerg /*
47*ef84fd3bSjoerg  * flock() operations
48*ef84fd3bSjoerg  */
49*ef84fd3bSjoerg #define   LOCK_SH   1    /* shared lock */
50*ef84fd3bSjoerg #define   LOCK_EX   2    /* exclusive lock */
51*ef84fd3bSjoerg #define   LOCK_NB   4    /* don't block when locking */
52*ef84fd3bSjoerg #define   LOCK_UN   8    /* unlock */
53*ef84fd3bSjoerg 
54*ef84fd3bSjoerg void *mmap(void *start, size_t length, int prot, int flags, int fd,
55*ef84fd3bSjoerg            off_t offset);
56*ef84fd3bSjoerg 
57*ef84fd3bSjoerg void munmap(void *addr, size_t length);
58*ef84fd3bSjoerg 
59*ef84fd3bSjoerg int msync(void *addr, size_t length, int flags);
60*ef84fd3bSjoerg 
61*ef84fd3bSjoerg int flock(int fd, int operation);
62*ef84fd3bSjoerg 
63*ef84fd3bSjoerg #endif /* _WIN32 */
64*ef84fd3bSjoerg 
65*ef84fd3bSjoerg #endif /* PROFILE_INSTRPROFILING_WINDOWS_MMAP_H */
66