[RFC,2/3] min_free_kbytes: enable check_monitor in background
diff mbox series

Message ID 20190319093858.584-2-liwang@redhat.com
State New
Headers show
Series
  • [RFC,1/3] min_free_kbytes: Fix child exit status check conditions
Related show

Commit Message

Li Wang March 19, 2019, 9:38 a.m. UTC
Also:
  do i+=pagesize to make test write page faster
  cleanup work

Signed-off-by: Li Wang <liwang@redhat.com>
---
 .../kernel/mem/tunable/min_free_kbytes.c      | 30 ++++++++-----------
 1 file changed, 13 insertions(+), 17 deletions(-)

Patch
diff mbox series

diff --git a/testcases/kernel/mem/tunable/min_free_kbytes.c b/testcases/kernel/mem/tunable/min_free_kbytes.c
index d2378a700..2eb51bf66 100644
--- a/testcases/kernel/mem/tunable/min_free_kbytes.c
+++ b/testcases/kernel/mem/tunable/min_free_kbytes.c
@@ -38,7 +38,7 @@ 
 
 #define MAP_SIZE (1UL<<20)
 
-volatile int end;
+static volatile int end;
 static long default_tune = -1;
 static long orig_overcommit = -1;
 static unsigned long total_mem;
@@ -83,8 +83,7 @@  static void min_free_kbytes_test(void)
 
 static void test_tune(unsigned long overcommit_policy)
 {
-	int status;
-	int pid[3];
+	int status, pid;
 	int ret, i;
 	unsigned long tune, memfree, memtotal;
 
@@ -97,7 +96,7 @@  static void test_tune(unsigned long overcommit_policy)
 		/* case2 */
 		else if (i == 1) {
 			set_sys_tune("min_free_kbytes", 2 * default_tune, 1);
-			/* case3 */
+		/* case3 */
 		} else {
 			memfree = SAFE_READ_MEMINFO("MemFree:");
 			memtotal = SAFE_READ_MEMINFO("MemTotal:");
@@ -109,15 +108,13 @@  static void test_tune(unsigned long overcommit_policy)
 		}
 
 		fflush(stdout);
-		switch (pid[i] = fork()) {
-		case -1:
-			tst_brk(TBROK | TERRNO, "fork");
-		case 0:
+		pid = SAFE_FORK();
+		if (pid == 0) {
 			ret = eatup_mem(overcommit_policy);
 			exit(ret);
 		}
 
-		SAFE_WAITPID(pid[i], &status, WUNTRACED | WCONTINUED);
+		SAFE_WAITPID(pid, &status, WUNTRACED | WCONTINUED);
 
 		if (WIFEXITED(status) && WEXITSTATUS(status) != 0) {
 			tst_res(TFAIL,
@@ -141,11 +138,10 @@  static void test_tune(unsigned long overcommit_policy)
 static int eatup_mem(unsigned long overcommit_policy)
 {
 	int ret = 0;
-	unsigned long memfree;
-	void *addrs;
+	char *addrs;
+	unsigned long i, pagesz = getpagesize();
 
-	memfree = SAFE_READ_MEMINFO("MemFree:");
-	printf("memfree is %lu kB before eatup mem\n", memfree);
+	tst_res(TINFO, "memfree is %lu kB before eatup mem", SAFE_READ_MEMINFO("MemFree:"));
 	while (1) {
 		addrs = mmap(NULL, MAP_SIZE, PROT_READ | PROT_WRITE,
 			     MAP_ANONYMOUS | MAP_PRIVATE, -1, 0);
@@ -156,10 +152,10 @@  static int eatup_mem(unsigned long overcommit_policy)
 			}
 			break;
 		}
-		memset(addrs, 1, MAP_SIZE);
+		for (i = 0; i < MAP_SIZE; i += pagesz)
+			*(addrs + i) = 'a';
 	}
-	memfree = SAFE_READ_MEMINFO("MemFree:");
-	printf("memfree is %lu kB after eatup mem\n", memfree);
+	tst_res(TINFO, "memfree is %lu kB after eatup mem", SAFE_READ_MEMINFO("MemFree:"));
 
 	return ret;
 }
@@ -169,7 +165,7 @@  static void check_monitor(void)
 	unsigned long tune;
 	unsigned long memfree;
 
-	while (end) {
+	while (!end) {
 		memfree = SAFE_READ_MEMINFO("MemFree:");
 		tune = get_sys_tune("min_free_kbytes");