]> gitweb.factorcode.org Git - factor.git/blob - basis/io/mmap/unix/unix.factor
ff6a3f49379b668475335517ccfb22206dd7b9c3
[factor.git] / basis / io / mmap / unix / unix.factor
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
4 io.mmap.private kernel libc literals locals system unix unix.ffi ;
5 IN: io.mmap.unix
6
7 :: mmap-open ( path length prot flags open-mode -- alien fd )
8     [
9         f length prot flags
10         path open-mode file-mode open-file [ <fd> |dispose drop ] keep
11         [ 0 mmap dup MAP_FAILED = [ throw-errno ] when ] keep
12     ] with-destructors ;
13
14 M: unix (mapped-file-r/w)
15     flags{ PROT_READ PROT_WRITE }
16     flags{ MAP_FILE MAP_SHARED }
17     O_RDWR mmap-open ;
18
19 M: unix (mapped-file-reader)
20     flags{ PROT_READ }
21     flags{ MAP_FILE MAP_SHARED }
22     O_RDONLY mmap-open ;
23
24 M: unix close-mapped-file ( mmap -- )
25     [ [ address>> ] [ length>> ] bi munmap io-error ]
26     [ handle>> close-file ] bi ;