summaryrefslogtreecommitdiffstats
path: root/lib/libc/sys/mmap.2
diff options
context:
space:
mode:
Diffstat (limited to 'lib/libc/sys/mmap.2')
-rw-r--r--lib/libc/sys/mmap.220
1 files changed, 19 insertions, 1 deletions
diff --git a/lib/libc/sys/mmap.2 b/lib/libc/sys/mmap.2
index 1c0d84a..2ca868e 100644
--- a/lib/libc/sys/mmap.2
+++ b/lib/libc/sys/mmap.2
@@ -207,4 +207,22 @@ was specified and insufficient memory was available.
.Xr munmap 2 ,
.Xr mprotect 2 ,
.Xr madvise 2 ,
-.Xr mincore 2
+.Xr mincore 2 ,
+.Xr mlock 2 ,
+.Xr munlock 2
+
+.Sh BUGS
+.Ar len
+is limit to 2GB. Mmapping slightly more than 2GB doesn't work, but
+mapping a window of size (filesize % 2GB) for file sizes of slightly
+less than 2G, 4GB, 6GB and 8GB.
+
+The limit is imposed for a variety of reasons. Most of them have to do
+with FreeBSD not wanting to use 64 bit offsets in the VM system due to
+the extreme performance penalty. So FreeBSD use 32bit page indexes and
+this gives FreeBSD a maximum of 8TB filesizes. It's actually bugs in
+the filesystem code that causes the limit to be further restricted to
+1TB (loss of precision when doing blockno calculations).
+
+Another reason for the 2GB limit is that filesystem metadata can
+reside at negative offsets.
OpenPOWER on IntegriCloud