lkml.org 
[lkml]   [2007]   [Jun]   [8]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: JIT emulator needs
    > There is an SE Linux execmem restriction that enforces W^X.

    This depends on whatever SELinux rulesets you are running. Its just a
    good rule to have present that most programs shouldn't be self patching,
    and then label those that do differently.

    > Sometimes it is very helpful to have the read/write mapping
    > be a fixed offset from the read/exec mapping. A power of 2
    > can be especially desirable.

    mmap MAP_FIXED can do this but you need to know a lot about the memory
    layout of the system so it gets a bit platform specific.

    > Emulators often need a cheap way to change page permissions.

    mprotect(, range) rather than a page at a time. The kernel will do
    merging.

    > a. sysctl to set IPC_RMID by default
    > b. shmget() flag to set IPC_RMID by default

    Use POSIX shared memory

    > c. open() flag to unlink a file before returning the fd

    Is it really that costly to create a blank file, why do you need to do it
    a lot in a JIT ?

    > e. mremap() flag to get a read/write mapping of a read/exec one
    > f. mremap() flag to get a read/exec mapping of a read/write one
    > g. mremap() flag to make the 5th arg (new addr) be the upper limit

    This is all mprotect and munmap.

    > h. 6-bit wide mremap() "flag" to set the upper limit above given base
    > i. support the prot argument to remap_file_pages
    > j. a documented way (madvise?) to punch same-VMA zero-page holes

    mmap (although you get more VMAs from that) so memset() is probably
    genuinely cheaper if the permissions are not changing.

    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2007-06-08 13:09    [from the cache]
    ©2003-2011 Jasper Spaans. Advertise on this site