1 ! Copyright (C) 2007 Doug Coleman.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: accessors destructors io.backend.unix io.mmap literals
4 io.mmap.private kernel locals math.bitwise system unix unix.ffi ;
7 :: mmap-open ( path length prot flags open-mode -- alien fd )
10 path open-mode file-mode open-file [ <fd> |dispose drop ] keep
11 [ 0 mmap dup MAP_FAILED = [ (io-error) ] when ] keep
14 M: unix (mapped-file-r/w)
15 flags{ PROT_READ PROT_WRITE }
16 flags{ MAP_FILE MAP_SHARED }
19 M: unix (mapped-file-reader)
21 flags{ MAP_FILE MAP_SHARED }
24 M: unix close-mapped-file ( mmap -- )
25 [ [ address>> ] [ length>> ] bi munmap io-error ]
26 [ handle>> close-file ] bi ;