[lkml]   [1996]   [Nov]   [18]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
SubjectRe: do_mmap()

In article <199611161838.NAA14616@mindbender.Princeton.EDU>,
David L. Oppenheimer <> wrote:
>Does anyone know what the purpose of this piece of code is? (It appears at the
>end of do_mmap() in mm/mmap.c)

> if (flags & VM_LOCKED) {
> unsigned long start = addr;
> mm->locked_vm += len >> PAGE_SHIFT;
> do {
> char c = get_user((char *) start);
> len -= PAGE_SIZE;
> start += PAGE_SIZE;
> __asm__ __volatile__("": :"r" (c));
> } while (len > 0);
> }

If the vm area is LOCKED in core e.g. for realtime purposes, it will touch
any of the pages by reading a byte from them.
IMHO, this is not strictly true, it should touch the pages by _writing_ ,
as this makes a difference on zero pages:
imagine a realtime process that has malloced a large chunk (with a mmap
based malloc), mlocks it, and then uses it - if memory is tight, it will
nevertheless cause swapping activity, which is what it wanted to prevent
by mlocking it.

Pascal Haible, haible@ITO.Uni-Stuttgart.DE

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