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 ,