Module Name:    src
Committed By:   christos
Date:           Wed May  2 16:00:20 UTC 2018

Modified Files:
        src/lib/libc/sys: mmap.2

Log Message:
Explain PROT_MPROTECT better, add references to mremap(2), document the
unimplemented flags, documented the alignment pre-defined constants.


To generate a diff of this commit:
cvs rdiff -u -r1.51 -r1.52 src/lib/libc/sys/mmap.2

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/lib/libc/sys/mmap.2
diff -u src/lib/libc/sys/mmap.2:1.51 src/lib/libc/sys/mmap.2:1.52
--- src/lib/libc/sys/mmap.2:1.51	Mon Jun 12 10:59:04 2017
+++ src/lib/libc/sys/mmap.2	Wed May  2 12:00:20 2018
@@ -1,4 +1,4 @@
-.\"	$NetBSD: mmap.2,v 1.51 2017/06/12 14:59:04 abhinav Exp $
+.\"	$NetBSD: mmap.2,v 1.52 2018/05/02 16:00:20 christos Exp $
 .\"
 .\" Copyright (c) 1991, 1993
 .\"	The Regents of the University of California.  All rights reserved.
@@ -29,7 +29,7 @@
 .\"
 .\"	@(#)mmap.2	8.4 (Berkeley) 5/11/95
 .\"
-.Dd April 27, 2017
+.Dd May 2, 2018
 .Dt MMAP 2
 .Os
 .Sh NAME
@@ -89,12 +89,22 @@ Placeholder when requesting no access pe
 .Pp
 As a
 .Nx
-extension,
+extension, the
 .Dv PROT_MPROTECT
-can be used to request additional permissions for later use with
+macro can be used to request additional permissions for later use with
 .Fn mprotect 2 .
+For example
+.Dv PROT_MPROTECT(PROT_READ)
+requests that future
+.Dv PROT_READ
+mappings are allowed and can be enabled using
+.Xr mprotect 2 ,
+but does not currently grant read mappings to the returned memory segment.
 This is necessary for switching pages between writable and executable
-when PAX mprotect restrictions are in place.
+when PaX MPROTECT restrictions are in place.
+See
+.Xr mremap 2
+for a sample use case.
 .Pp
 .Bf -symbolic
 Note that, due to hardware limitations, on some platforms
@@ -137,6 +147,21 @@ size as returned by
 with the
 .Dv _SC_PAGESIZE
 request.
+The following constants are defined for convenience:
+.Bl -bullet -compact -offset indent
+.It
+.Dv MAP_ALIGNMENT_64KB
+.It
+.Dv MAP_ALIGNMENT_16MB
+.It
+.Dv MAP_ALIGNMENT_4GB
+.It
+.Dv MAP_ALIGNMENT_1TB
+.It
+.Dv MAP_ALIGNMENT_256TB
+.It
+.Dv MAP_ALIGNMENT_64PB
+.El
 .It Dv MAP_ANON
 Map anonymous memory not associated with any specific file.
 The file descriptor is not used for creating
@@ -170,6 +195,23 @@ handling may be necessary.
 Permit regions to be inherited across
 .Xr execve 2
 system calls.
+.It Dv MAP_NORESERVE
+Only reserve address space, but do not reserve swap space or any other
+resources for this mapping.
+Access to the address space is not guaranteed and may result in a segmentation
+violation.
+Unimplemented.
+.It Dv MAP_REMAPDUP
+Only valid for
+.Xr mremap 2 .
+.It Dv MAP_RENAME
+Assign the referenced private pages to the file descriptor provided.
+Unimplemented.
+.It Dv MAP_STACK
+Allocate a memory segment that can be used either for a process or thread stack.
+This currently has no effect, but its use is reserved for architectures
+that might require special treatment of that address space.
+Unimplemented.
 .It Dv MAP_TRYFIXED
 Attempt to use the address
 .Fa addr
@@ -303,6 +345,7 @@ would exceed the offset maximum establis
 .Xr mincore 2 ,
 .Xr mlock 2 ,
 .Xr mprotect 2 ,
+.Xr mremap 2 ,
 .Xr msync 2 ,
 .Xr munmap 2 ,
 .Xr getpagesize 3 ,

Reply via email to