Date: Sat, 28 Aug 2010 16:57:07 +0000 (UTC) From: Alan Cox <alc@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r211937 - in head: lib/libc/sys sys/sys sys/vm Message-ID: <201008281657.o7SGv7YD037494@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: alc Date: Sat Aug 28 16:57:07 2010 New Revision: 211937 URL: http://svn.freebsd.org/changeset/base/211937 Log: Add the MAP_PREFAULT_READ option to mmap(2). Reviewed by: jhb, kib Modified: head/lib/libc/sys/mmap.2 head/sys/sys/mman.h head/sys/sys/param.h head/sys/vm/vm_mmap.c Modified: head/lib/libc/sys/mmap.2 ============================================================================== --- head/lib/libc/sys/mmap.2 Sat Aug 28 16:32:01 2010 (r211936) +++ head/lib/libc/sys/mmap.2 Sat Aug 28 16:57:07 2010 (r211937) @@ -28,7 +28,7 @@ .\" @(#)mmap.2 8.4 (Berkeley) 5/11/95 .\" $FreeBSD$ .\" -.Dd November 6, 2009 +.Dd August 28, 2010 .Dt MMAP 2 .Os .Sh NAME @@ -211,6 +211,19 @@ implements a coherent file system buffer However, it may be used to associate dirty VM pages with file system buffers and thus cause them to be flushed to physical media sooner rather than later. +.It Dv MAP_PREFAULT_READ +Immediately update the calling process's lowest-level virtual address +translation structures, such as its page table, so that every memory +resident page within the region is mapped for read access. +Ordinarily these structures are updated lazily. +The effect of this option is to eliminate any soft faults that would +otherwise occur on the initial read accesses to the region. +Although this option does not preclude +.Fa prot +from including +.Dv PROT_WRITE , +it does not eliminate soft faults on the initial write accesses to the +region. .It Dv MAP_PRIVATE Modifications are private. .It Dv MAP_SHARED Modified: head/sys/sys/mman.h ============================================================================== --- head/sys/sys/mman.h Sat Aug 28 16:32:01 2010 (r211936) +++ head/sys/sys/mman.h Sat Aug 28 16:57:07 2010 (r211937) @@ -90,6 +90,7 @@ * Extended flags */ #define MAP_NOCORE 0x00020000 /* dont include these pages in a coredump */ +#define MAP_PREFAULT_READ 0x00040000 /* prefault mapping for reading */ #endif /* __BSD_VISIBLE */ #if __POSIX_VISIBLE >= 199309 Modified: head/sys/sys/param.h ============================================================================== --- head/sys/sys/param.h Sat Aug 28 16:32:01 2010 (r211936) +++ head/sys/sys/param.h Sat Aug 28 16:57:07 2010 (r211937) @@ -58,7 +58,7 @@ * in the range 5 to 9. */ #undef __FreeBSD_version -#define __FreeBSD_version 900018 /* Master, propagated to newvers */ +#define __FreeBSD_version 900019 /* Master, propagated to newvers */ #ifndef LOCORE #include <sys/types.h> Modified: head/sys/vm/vm_mmap.c ============================================================================== --- head/sys/vm/vm_mmap.c Sat Aug 28 16:32:01 2010 (r211936) +++ head/sys/vm/vm_mmap.c Sat Aug 28 16:57:07 2010 (r211937) @@ -1467,9 +1467,10 @@ vm_mmap(vm_map_t map, vm_offset_t *addr, */ if (handle == 0) foff = 0; - } else { + } else if (flags & MAP_PREFAULT_READ) + docow = MAP_PREFAULT; + else docow = MAP_PREFAULT_PARTIAL; - } if ((flags & (MAP_ANON|MAP_SHARED)) == 0) docow |= MAP_COPY_ON_WRITE;
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201008281657.o7SGv7YD037494>