1. Address space management

Start python section to spkgs/mmap.py[1 /1 ]
     1: #line 9 "./lpsrc/flx_mmap.pak"
     2: if HAVE_MMAP:
     3:   unit_tests = glob.glob('test/mmap/mmap-*.flx')
     4: 
     5: iscr_source = ['lpsrc/flx_mmap.pak']
     6: weaver_directory = 'doc/mmap/'
     7: 
End python section to spkgs/mmap.py[1]
Start data section to config/mmap.fpc[1 /1 ]
     1: Name: mmap
     2: 
End data section to config/mmap.fpc[1]
Start felix section to lib/mmap.flx[1 /1 ]
     1: #line 21 "./lpsrc/flx_mmap.pak"
     2: #import <flx.flxh>
     3: 
     4: module Mmap
     5: {
     6:   header """
     7:     #include <sys/mman.h>
     8:     #include <unistd.h>
     9: 
    10:     // MAP_ANON is an older form of MAP_ANONYMOUS, and should be compatible
    11:     #if !defined(MAP_ANONYMOUS) && defined(MAP_ANON)
    12:     #  define MAP_ANONYMOUS MAP_ANON
    13:     #endif
    14:   """;
    15: 
    16:   typedef off_t = unsigned long;
    17:   // protection options
    18: #line 55 "./lpsrc/flx_mmap.pak"
    19:   const PROT_EXEC : int;
    20: #line 55 "./lpsrc/flx_mmap.pak"
    21:   const PROT_READ : int;
    22: #line 55 "./lpsrc/flx_mmap.pak"
    23:   const PROT_WRITE : int;
    24: #line 55 "./lpsrc/flx_mmap.pak"
    25:   const MAP_DENYWRITE: int;
    26: #line 55 "./lpsrc/flx_mmap.pak"
    27:   const MAP_ANONYMOUS: int;
    28: #line 55 "./lpsrc/flx_mmap.pak"
    29:   const MAP_FILE: int;
    30: #line 55 "./lpsrc/flx_mmap.pak"
    31:   const MAP_FIXED: int;
    32: #line 55 "./lpsrc/flx_mmap.pak"
    33:   const MAP_SHARED : int;
    34: #line 55 "./lpsrc/flx_mmap.pak"
    35:   const MAP_PRIVATE : int;
    36: #line 55 "./lpsrc/flx_mmap.pak"
    37:   const MAP_NORESERVE: int;
    38: #line 55 "./lpsrc/flx_mmap.pak"
    39:   const MAP_LOCKED: int;
    40: #line 55 "./lpsrc/flx_mmap.pak"
    41:   const MAP_GROWSDOWN: int;
    42: #line 55 "./lpsrc/flx_mmap.pak"
    43:   const MAP_32BIT: int;
    44: #line 55 "./lpsrc/flx_mmap.pak"
    45:   const MAP_POPULATE: int;
    46: #line 55 "./lpsrc/flx_mmap.pak"
    47:   const MAP_NONBLOCK: int;
    48: 
    49:   const MAP_FAILED : address;
    50: 
    51:   // size of a page
    52:   const _SC_PAGESIZE : long = "sysconf(_SC_PAGESIZE)";
    53: 
    54:   fun mmap:
    55:     address * //< start address
    56:     size *    //< bytes to map
    57:     int *     //< protection
    58:     int *     //< flags
    59:     int *     //< file descriptor
    60:     off_t     //< offset into file, multiple of _SC_PAGESIZE
    61:     -> address; //< start of reserved address space
    62: 
    63:   fun munmap: address * size -> int;
    64: }
    65: 
End felix section to lib/mmap.flx[1]