diff mbox series

[v2,1/5] memcontrol: Lift out some common definitions into a shared header

Message ID 20220203081820.29521-2-rpalethorpe@suse.com
State Superseded
Headers show
Series Add memcontrol03 and declarative CG API | expand

Commit Message

Richard Palethorpe Feb. 3, 2022, 8:18 a.m. UTC
Some simple functions can be shared between tests. The original
selftests share a bit more. However this doesn't make as much sense in
LTP due to library differences.

Signed-off-by: Richard Palethorpe <rpalethorpe@suse.com>
---
 .../kernel/controllers/memcg/memcontrol02.c   | 32 +------------
 .../controllers/memcg/memcontrol_common.h     | 48 +++++++++++++++++++
 2 files changed, 49 insertions(+), 31 deletions(-)
 create mode 100644 testcases/kernel/controllers/memcg/memcontrol_common.h

Comments

Cyril Hrubis Feb. 3, 2022, 1:04 p.m. UTC | #1
Hi!
Reviewed-by: Cyril Hrubis <chrubis@suse.cz>
Li Wang Feb. 4, 2022, 7:42 a.m. UTC | #2
Reviewed-by: Li Wang <liwang@redhat.com>
diff mbox series

Patch

diff --git a/testcases/kernel/controllers/memcg/memcontrol02.c b/testcases/kernel/controllers/memcg/memcontrol02.c
index 548f36829..d5a24cc0a 100644
--- a/testcases/kernel/controllers/memcg/memcontrol02.c
+++ b/testcases/kernel/controllers/memcg/memcontrol02.c
@@ -23,14 +23,7 @@ 
  */
 #define _GNU_SOURCE
 
-#include <stdlib.h>
-#include <stdio.h>
-
-#include "tst_test.h"
-#include "tst_cgroup.h"
-
-#define TMPDIR "mntdir"
-#define MB(x) (x << 20)
+#include "memcontrol_common.h"
 
 static size_t page_size;
 static const struct tst_cgroup_group *cg_test;
@@ -38,20 +31,6 @@  static struct tst_cgroup_group *cg_child;
 static int fd;
 static int file_to_all_error = 10;
 
-/*
- * Checks if two given values differ by less than err% of their
- * sum. An extra percent is added for every doubling of the page size
- * to compensate for wastage in page sized allocations.
- */
-static inline int values_close(const ssize_t a,
-			       const ssize_t b,
-			       const ssize_t err)
-{
-	const ssize_t page_adjusted_err = ffs(page_size >> 13) + err;
-
-	return 100 * labs(a - b) <= (a + b) * page_adjusted_err;
-}
-
 static void alloc_anon_50M_check(void)
 {
 	const ssize_t size = MB(50);
@@ -78,15 +57,6 @@  static void alloc_anon_50M_check(void)
 		     current, anon);
 }
 
-static void alloc_pagecache(const int fd, size_t size)
-{
-	char buf[BUFSIZ];
-	size_t i;
-
-	for (i = 0; i < size; i += sizeof(buf))
-		SAFE_WRITE(1, fd, buf, sizeof(buf));
-}
-
 static void alloc_pagecache_50M_check(void)
 {
 	const size_t size = MB(50);
diff --git a/testcases/kernel/controllers/memcg/memcontrol_common.h b/testcases/kernel/controllers/memcg/memcontrol_common.h
new file mode 100644
index 000000000..67f3ca318
--- /dev/null
+++ b/testcases/kernel/controllers/memcg/memcontrol_common.h
@@ -0,0 +1,48 @@ 
+// SPDX-License-Identifier: GPL-2.0
+
+#include <stdlib.h>
+#include <stdio.h>
+
+#include "tst_test.h"
+#include "tst_cgroup.h"
+
+#define TMPDIR "mntdir"
+#define MB(x) (x << 20)
+
+/*
+ * Checks if two given values differ by less than err% of their
+ * sum. An extra percent is added for every doubling of the page size
+ * to compensate for wastage in page sized allocations.
+ */
+static inline int values_close(const ssize_t a,
+			       const ssize_t b,
+			       const ssize_t err)
+{
+	const size_t page_size = SAFE_SYSCONF(_SC_PAGESIZE);
+	const ssize_t page_adjusted_err = ffs(page_size >> 13) + err;
+
+	return 100 * labs(a - b) <= (a + b) * page_adjusted_err;
+}
+
+static inline void alloc_pagecache(const int fd, size_t size)
+{
+	char buf[BUFSIZ];
+	size_t i;
+
+	SAFE_LSEEK(fd, 0, SEEK_END);
+
+	for (i = 0; i < size; i += sizeof(buf))
+		SAFE_WRITE(1, fd, buf, sizeof(buf));
+}
+
+static inline void alloc_anon(const size_t size)
+{
+	const size_t page_size = SAFE_SYSCONF(_SC_PAGESIZE);
+	char *const buf = SAFE_MALLOC(size);
+	size_t i;
+
+	for (i = 0; i < size; i += page_size)
+		buf[i] = 0;
+
+	free(buf);
+}