]> git.proxmox.com Git - libgit2.git/blob - src/util/map.h
New upstream version 1.5.0+ds
[libgit2.git] / src / util / map.h
1 /*
2 * Copyright (C) the libgit2 contributors. All rights reserved.
3 *
4 * This file is part of libgit2, distributed under the GNU GPL v2 with
5 * a Linking Exception. For full terms see the included COPYING file.
6 */
7 #ifndef INCLUDE_map_h__
8 #define INCLUDE_map_h__
9
10 #include "git2_util.h"
11
12
13 /* p_mmap() prot values */
14 #define GIT_PROT_NONE 0x0
15 #define GIT_PROT_READ 0x1
16 #define GIT_PROT_WRITE 0x2
17 #define GIT_PROT_EXEC 0x4
18
19 /* git__mmmap() flags values */
20 #define GIT_MAP_FILE 0
21 #define GIT_MAP_SHARED 1
22 #define GIT_MAP_PRIVATE 2
23 #define GIT_MAP_TYPE 0xf
24 #define GIT_MAP_FIXED 0x10
25
26 #ifdef __amigaos4__
27 #define MAP_FAILED 0
28 #endif
29
30 typedef struct { /* memory mapped buffer */
31 void *data; /* data bytes */
32 size_t len; /* data length */
33 #ifdef GIT_WIN32
34 HANDLE fmh; /* file mapping handle */
35 #endif
36 } git_map;
37
38 #define GIT_MMAP_VALIDATE(out, len, prot, flags) do { \
39 GIT_ASSERT(out != NULL && len > 0); \
40 GIT_ASSERT((prot & GIT_PROT_WRITE) || (prot & GIT_PROT_READ)); \
41 GIT_ASSERT((flags & GIT_MAP_FIXED) == 0); } while (0)
42
43 extern int p_mmap(git_map *out, size_t len, int prot, int flags, int fd, off64_t offset);
44 extern int p_munmap(git_map *map);
45
46 #endif