]> sourceware.org Git - glibc.git/commitdiff
linux: Add MAP_DROPPABLE from Linux 6.11
authorAdhemerval Zanella <adhemerval.zanella@linaro.org>
Tue, 8 Oct 2024 18:45:26 +0000 (15:45 -0300)
committerAdhemerval Zanella <adhemerval.zanella@linaro.org>
Thu, 10 Oct 2024 13:27:53 +0000 (10:27 -0300)
This request the page to be never written out to swap, it will be zeroed
under memory pressure (so kernel can just drop the page), it is inherited
by fork, it is not counted against @code{mlock} budget, and if there is
no enough memory to service a page faults there is no fatal error (so not
signal is sent).

Tested with build-many-glibcs.py.

Reviewed-by: H.J. Lu <hjl.tools@gmail.com>
manual/llio.texi
sysdeps/unix/sysv/linux/bits/mman-linux.h
sysdeps/unix/sysv/linux/tst-mman-consts.py

index a035c3e20f86951e2f9c0e97eeca973830b0be5c..05ab44c6e7a5d4fd617a2a4d4d8289a45b944e7a 100644 (file)
@@ -1762,6 +1762,15 @@ write dirty metadata out whenever dirty data is written out.  Unlike
 most other flags, this one will fail unless @code{MAP_SHARED_VALIDATE}
 is also given.
 
+@item MAP_DROPPABLE
+Request the page to be never written out to swap, it will be zeroed
+under memory pressure (so kernel can just drop the page), it is inherited
+by fork, it is not counted against @code{mlock} budget, and if there is
+not enough memory to service a page fault there is no fatal error (so no
+signal is sent).
+
+The @code{MAP_DROPPABLE} flag is specific to Linux.
+
 @end vtable
 
 @code{mmap} returns the address of the new mapping, or
index 522333c50a04481d19167c5243e7a58e3b4e362c..161a88509682cf6929ead7db50864528e3be141d 100644 (file)
@@ -43,6 +43,7 @@
 #define MAP_PRIVATE    0x02            /* Changes are private.  */
 #define MAP_SHARED_VALIDATE    0x03    /* Share changes and validate
                                           extension flags.  */
+#define MAP_DROPPABLE  0x08            /* Zero memory under memory pressure.  */
 #define MAP_TYPE       0x0f            /* Mask for type of mapping.  */
 
 /* Other flags.  */
index a1137eb1d59d95ec803e54111435d42e178df56c..2191bea36f8f69e04d2e45d3ffc6abf5445e9a12 100644 (file)
@@ -33,7 +33,7 @@ def main():
                         help='C compiler (including options) to use')
     args = parser.parse_args()
     linux_version_headers = glibcsyscalls.linux_kernel_version(args.cc)
-    linux_version_glibc = (6, 10)
+    linux_version_glibc = (6, 11)
     sys.exit(glibcextract.compare_macro_consts(
         '#define _GNU_SOURCE 1\n'
         '#include <sys/mman.h>\n',
This page took 0.047614 seconds and 5 git commands to generate.