lkml.org 
[lkml]   [1996]   [Mar]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
From
Subjectmmove?
Date
Hi,

I believe that the semantics provided by
mremap(region, old_size, new_size, canmove) is not optimal, because it doesn't
give a process enough control over virtual memory. We should implement memory
mapping calls that will be useful for a variety of applications, not just
malloc:

mcheck(caddr_t *addr, size_t *len, int *prot, int *flags) - find the
first existing memory map in the range addr..(addr+len) and return it's
parameters to the caller.

mcopy(caddr_t addr, size_t len, caddr_t *newaddr, int flags) -

copy memory pages to a new address. The flags can include MAP_FIXED to
control handling of newaddr as well as copy type, such as:

MAP_COPY - make a copy-on-write duplicate of <addr,len> mapping.
MAP_ALIAS - make <newaddr, len> an alias for <addr,len> such as changing
one of them changes the other.
MAP_MOVE - move pages to a new location and delete old mapping.

Library functions such as memcpy could use mcopy with MAP_COPY to
speed up handling large regions of memory. mremap can also be implemented
in libc using mcheck, mcopy and mmap.

Btw, I don't claim this is the best semantics. MACH has a comprehansive set
of memory management functions (vm_allocate and friends). Can anyone look at
it and see if it can be adopted in Linux?
--
Snow ^oo^ Cat <snowcat@math.CSUFresno.EDU>
_ -> <- aka Oleg Kibirev <oleg@math.CSUFresno.EDU>
___(_) _ _)_
/ _) finger oleg@math.math.CSUFresno.EDU for PGP public key
\_.-._
|___/ Purr!


\
 
 \ /
  Last update: 2005-03-22 13:36    [W:0.017 / U:0.332 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site