]> gitweb.factorcode.org Git - factor.git/blob - basis/io/unix/mmap/mmap.factor
d5dcda94364b7dc6b22ece332c6fd51354d7ad99
[factor.git] / basis / io / unix / mmap / mmap.factor
1 ! Copyright (C) 2007 Doug Coleman.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: alien io io.files kernel math math.bitwise system unix
4 io.unix.backend io.ports io.mmap destructors locals accessors ;
5 IN: io.unix.mmap
6
7 : open-r/w ( path -- fd ) O_RDWR file-mode open-file ;
8
9 :: mmap-open ( path length prot flags -- alien fd )
10     [
11         f length prot flags
12         path open-r/w |dispose
13         [ 0 mmap dup MAP_FAILED = [ (io-error) ] when ] keep
14     ] with-destructors ;
15
16 M: unix (mapped-file)
17     { PROT_READ PROT_WRITE } flags
18     { MAP_FILE MAP_SHARED } flags
19     mmap-open ;
20
21 M: unix close-mapped-file ( mmap -- )
22     [ [ address>> ] [ length>> ] bi munmap io-error ]
23     [ handle>> close-file ]
24     bi ;