summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorAndreas Rumpf <rumpf_a@web.de>2016-10-24 22:05:11 +0200
committerGitHub <noreply@github.com>2016-10-24 22:05:11 +0200
commit60d13c488df30970d94325711be634dc33a359dd (patch)
treed58fbb02e3adc953af8dda3bb65e1e22aafd08d4
parentfb1406f68fa8906e19d646a39459e3413a92aed0 (diff)
parentd2d618dde75d5a8189a943268b1cbb1aed28dc48 (diff)
downloadNim-60d13c488df30970d94325711be634dc33a359dd.tar.gz
Merge pull request #4888 from arnetheduck/mmap-fixes
add MAP_ANONYMOUS const for amd64, fix MAP_PRIVATE on mips etc
-rw-r--r--lib/system/osalloc.nim13
1 files changed, 10 insertions, 3 deletions
diff --git a/lib/system/osalloc.nim b/lib/system/osalloc.nim
index 316dd74d7..b0639a75a 100644
--- a/lib/system/osalloc.nim
+++ b/lib/system/osalloc.nim
@@ -81,20 +81,27 @@ elif defined(posix):
   const
     PROT_READ  = 1             # page can be read
     PROT_WRITE = 2             # page can be written
-    MAP_PRIVATE = 2'i32        # Changes are private
 
   when defined(macosx) or defined(bsd):
     const MAP_ANONYMOUS = 0x1000
+    const MAP_PRIVATE = 0x02        # Changes are private
   elif defined(solaris):
     const MAP_ANONYMOUS = 0x100
+    const MAP_PRIVATE = 0x02        # Changes are private
+  elif defined(linux) and defined(amd64):
+    # actually, any architecture using asm-generic, but being conservative here,
+    # some arches like mips and alpha use different values
+    const MAP_ANONYMOUS = 0x20
+    const MAP_PRIVATE = 0x02        # Changes are private
   else:
     var
       MAP_ANONYMOUS {.importc: "MAP_ANONYMOUS", header: "<sys/mman.h>".}: cint
+      MAP_PRIVATE {.importc: "MAP_PRIVATE", header: "<sys/mman.h>".}: cint
 
-  proc mmap(adr: pointer, len: int, prot, flags, fildes: cint,
+  proc mmap(adr: pointer, len: csize, prot, flags, fildes: cint,
             off: int): pointer {.header: "<sys/mman.h>".}
 
-  proc munmap(adr: pointer, len: int): cint {.header: "<sys/mman.h>".}
+  proc munmap(adr: pointer, len: csize): cint {.header: "<sys/mman.h>".}
 
   proc osAllocPages(size: int): pointer {.inline.} =
     result = mmap(nil, size, PROT_READ or PROT_WRITE,
+0000 Moved messages handlers to server_events' href='/danisanti/profani-tty/commit/src/server_events.h?id=a54518f2d421f212bef3e43919e4b369afb89dd5'>a54518f2 ^
8aba52f4 ^

dd206ef6 ^
8aba52f4 ^
a54518f2 ^
56697996 ^
530c060d ^
dd206ef6 ^

8aba52f4 ^







8ebc1d4a ^
8aba52f4 ^


4bcd766d ^
8aba52f4 ^
d12534c5 ^
8aba52f4 ^

d12534c5 ^
8aba52f4 ^

78a1556f ^
56697996 ^

8aba52f4 ^
8aba52f4 ^
67755ca7 ^

8aba52f4 ^
77674beb ^

8aba52f4 ^
4e429fe7 ^
8aba52f4 ^
87cdbe01 ^

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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91