add MAP_ANONYMOUS const for amd64, fix MAP_PRIVATE on mips etc (see fe36254)
This commit is contained in:
parent
e6ff6dd9c8
commit
d2d618dde7
1 changed files with 10 additions and 3 deletions
|
|
@ -81,20 +81,27 @@ elif defined(posix):
|
||||||
const
|
const
|
||||||
PROT_READ = 1 # page can be read
|
PROT_READ = 1 # page can be read
|
||||||
PROT_WRITE = 2 # page can be written
|
PROT_WRITE = 2 # page can be written
|
||||||
MAP_PRIVATE = 2'i32 # Changes are private
|
|
||||||
|
|
||||||
when defined(macosx) or defined(bsd):
|
when defined(macosx) or defined(bsd):
|
||||||
const MAP_ANONYMOUS = 0x1000
|
const MAP_ANONYMOUS = 0x1000
|
||||||
|
const MAP_PRIVATE = 0x02 # Changes are private
|
||||||
elif defined(solaris):
|
elif defined(solaris):
|
||||||
const MAP_ANONYMOUS = 0x100
|
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:
|
else:
|
||||||
var
|
var
|
||||||
MAP_ANONYMOUS {.importc: "MAP_ANONYMOUS", header: "<sys/mman.h>".}: cint
|
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>".}
|
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.} =
|
proc osAllocPages(size: int): pointer {.inline.} =
|
||||||
result = mmap(nil, size, PROT_READ or PROT_WRITE,
|
result = mmap(nil, size, PROT_READ or PROT_WRITE,
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue