public inbox for ltp@lists.linux.it
 help / color / mirror / Atom feed
* [LTP] [PATCH v1] mmap21.c: Test for new MAP_DROPPABLE flag for mmap
@ 2024-12-28 13:32 Wei Gao via ltp
  2024-12-31 10:04 ` Li Wang
  2025-01-03 13:56 ` [LTP] [PATCH v2] " Wei Gao via ltp
  0 siblings, 2 replies; 20+ messages in thread
From: Wei Gao via ltp @ 2024-12-28 13:32 UTC (permalink / raw)
  To: ltp

Signed-off-by: Wei Gao <wegao@suse.com>
---
 include/lapi/mmap.h                       |  4 ++
 runtest/syscalls                          |  1 +
 testcases/kernel/syscalls/mmap/.gitignore |  1 +
 testcases/kernel/syscalls/mmap/mmap21.c   | 73 +++++++++++++++++++++++
 4 files changed, 79 insertions(+)
 create mode 100644 testcases/kernel/syscalls/mmap/mmap21.c

diff --git a/include/lapi/mmap.h b/include/lapi/mmap.h
index ea9730586..248b64564 100644
--- a/include/lapi/mmap.h
+++ b/include/lapi/mmap.h
@@ -87,6 +87,10 @@
 # define MADV_PAGEOUT	21
 #endif
 
+#ifndef MAP_DROPPABLE
+# define MAP_DROPPABLE 0x08
+#endif
+
 #ifndef MAP_FIXED_NOREPLACE
 
 #ifdef __alpha__
diff --git a/runtest/syscalls b/runtest/syscalls
index ded035ee8..7166e39a4 100644
--- a/runtest/syscalls
+++ b/runtest/syscalls
@@ -840,6 +840,7 @@ mmap17 mmap17
 mmap18 mmap18
 mmap19 mmap19
 mmap20 mmap20
+mmap21 mmap21
 
 modify_ldt01 modify_ldt01
 modify_ldt02 modify_ldt02
diff --git a/testcases/kernel/syscalls/mmap/.gitignore b/testcases/kernel/syscalls/mmap/.gitignore
index 4591fdbb9..87b23aaee 100644
--- a/testcases/kernel/syscalls/mmap/.gitignore
+++ b/testcases/kernel/syscalls/mmap/.gitignore
@@ -18,3 +18,4 @@
 /mmap18
 /mmap19
 /mmap20
+/mmap21
diff --git a/testcases/kernel/syscalls/mmap/mmap21.c b/testcases/kernel/syscalls/mmap/mmap21.c
new file mode 100644
index 000000000..e2b8c4551
--- /dev/null
+++ b/testcases/kernel/syscalls/mmap/mmap21.c
@@ -0,0 +1,73 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+/*
+ * Copyright (c) 2024 Wei Gao <wegao@suse.com>
+ */
+
+/*\
+ * [Description]
+ *
+ * Test mmap(2) with MAP_DROPPABLE flag.
+ *
+ * Test base on kernel selftests/mm/droppable.c
+ */
+
+#include <errno.h>
+#include <stdio.h>
+#include <sys/types.h>
+#include "tst_test.h"
+#include "lapi/mmap.h"
+
+static void test_mmap(void)
+{
+	size_t alloc_size = 134217728;
+	size_t page_size = getpagesize();
+	void *alloc;
+	pid_t child;
+
+	alloc = SAFE_MMAP(0, alloc_size, PROT_READ | PROT_WRITE,
+			MAP_ANONYMOUS | MAP_DROPPABLE, -1, 0);
+
+	memset(alloc, 'A', alloc_size);
+	for (size_t i = 0; i < alloc_size; i += page_size) {
+		if (*(char *)(alloc + i) != 'A')
+			tst_res(TFAIL, "memset failed");
+	}
+
+	int *shared_var = SAFE_MMAP(NULL, sizeof(int), PROT_READ | PROT_WRITE,
+			MAP_SHARED | MAP_ANONYMOUS, -1, 0);
+
+	*shared_var = 0;
+
+	child = SAFE_FORK();
+	if (!child) {
+		for (;;) {
+			*(char *)malloc(page_size) = 'B';
+			if ((*shared_var) == 1)
+				exit(0);
+		}
+	}
+
+	for (; !(*shared_var);) {
+		for (size_t i = 0; i < alloc_size; i += page_size) {
+			if (!*(uint8_t *)(alloc + i)) {
+				*shared_var = 1;
+				break;
+			}
+		}
+	}
+
+	TST_EXP_EQ_LI((*shared_var), 1);
+
+	SAFE_WAITPID(child, NULL, 0);
+
+	SAFE_MUNMAP(alloc, alloc_size);
+	SAFE_MUNMAP(shared_var, sizeof(int));
+}
+
+static struct tst_test test = {
+	.min_kver = "6.11",
+	.test_all = test_mmap,
+	.needs_tmpdir = 1,
+	.forks_child = 1,
+	.max_runtime = 180,
+};
-- 
2.35.3


-- 
Mailing list info: https://lists.linux.it/listinfo/ltp

^ permalink raw reply related	[flat|nested] 20+ messages in thread

end of thread, other threads:[~2025-05-14 12:55 UTC | newest]

Thread overview: 20+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-12-28 13:32 [LTP] [PATCH v1] mmap21.c: Test for new MAP_DROPPABLE flag for mmap Wei Gao via ltp
2024-12-31 10:04 ` Li Wang
2025-01-02  9:38   ` Cyril Hrubis
2025-01-03  1:42   ` Wei Gao via ltp
2025-01-03 13:54   ` Wei Gao via ltp
2025-01-03 13:56 ` [LTP] [PATCH v2] " Wei Gao via ltp
2025-03-10 16:18   ` Cyril Hrubis
2025-04-16 19:16   ` [LTP] [PATCH v3] mmap22.c: " Wei Gao via ltp
2025-04-25 11:40     ` Cyril Hrubis
2025-04-28 16:04     ` [LTP] [PATCH v4] " Wei Gao via ltp
2025-05-07 15:25       ` Cyril Hrubis
2025-05-12  8:43         ` Jan Stancek via ltp
2025-05-13 15:44           ` Wei Gao via ltp
2025-05-14  8:51             ` Jan Stancek via ltp
2025-05-14  9:04               ` Li Wang via ltp
2025-05-14  9:10                 ` Jan Stancek via ltp
2025-05-14  9:14                   ` Li Wang via ltp
2025-05-14 11:15                     ` Jan Stancek via ltp
2025-05-14 12:44                       ` Li Wang via ltp
2025-05-14 12:54                         ` Jan Stancek via ltp

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox