From owner-svn-src-all@FreeBSD.ORG Sat Aug 28 16:57:07 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id AA1361065697; Sat, 28 Aug 2010 16:57:07 +0000 (UTC) (envelope-from alc@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 7F14C8FC0C; Sat, 28 Aug 2010 16:57:07 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o7SGv7eC037499; Sat, 28 Aug 2010 16:57:07 GMT (envelope-from alc@svn.freebsd.org) Received: (from alc@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o7SGv7YD037494; Sat, 28 Aug 2010 16:57:07 GMT (envelope-from alc@svn.freebsd.org) Message-Id: <201008281657.o7SGv7YD037494@svn.freebsd.org> From: Alan Cox Date: Sat, 28 Aug 2010 16:57:07 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r211937 - in head: lib/libc/sys sys/sys sys/vm X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 28 Aug 2010 16:57:07 -0000 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 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;