selftests/mm: transhuge-stress: conform to TAP format output
authorMuhammad Usama Anjum <usama.anjum@collabora.com>
Fri, 2 Feb 2024 11:31:18 +0000 (16:31 +0500)
committerAndrew Morton <akpm@linux-foundation.org>
Thu, 22 Feb 2024 18:24:49 +0000 (10:24 -0800)
Conform the layout, informational and status messages to TAP.  No
functional change is intended other than the layout of output messages.

Link: https://lkml.kernel.org/r/20240202113119.2047740-12-usama.anjum@collabora.com
Signed-off-by: Muhammad Usama Anjum <usama.anjum@collabora.com>
Cc: Shuah Khan <shuah@kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
tools/testing/selftests/mm/transhuge-stress.c
tools/testing/selftests/mm/vm_util.c

index c61fb9350b8c21439bbf7f158210f42c8e59cefe..68201192e37c8da889f9f9ed701402c22be9b59f 100644 (file)
@@ -16,6 +16,7 @@
 #include <string.h>
 #include <sys/mman.h>
 #include "vm_util.h"
+#include "../kselftest.h"
 
 int backing_fd = -1;
 int mmap_flags = MAP_ANONYMOUS | MAP_NORESERVE | MAP_PRIVATE;
@@ -34,6 +35,8 @@ int main(int argc, char **argv)
        int pagemap_fd;
        int duration = 0;
 
+       ksft_print_header();
+
        ram = sysconf(_SC_PHYS_PAGES);
        if (ram > SIZE_MAX / psize() / 4)
                ram = SIZE_MAX / 4;
@@ -43,7 +46,8 @@ int main(int argc, char **argv)
 
        while (++i < argc) {
                if (!strcmp(argv[i], "-h"))
-                       errx(1, "usage: %s [-f <filename>] [-d <duration>] [size in MiB]", argv[0]);
+                       ksft_exit_fail_msg("usage: %s [-f <filename>] [-d <duration>] [size in MiB]\n",
+                                          argv[0]);
                else if (!strcmp(argv[i], "-f"))
                        name = argv[++i];
                else if (!strcmp(argv[i], "-d"))
@@ -52,10 +56,12 @@ int main(int argc, char **argv)
                        len = atoll(argv[i]) << 20;
        }
 
+       ksft_set_plan(1);
+
        if (name) {
                backing_fd = open(name, O_RDWR);
                if (backing_fd == -1)
-                       errx(2, "open %s", name);
+                       ksft_exit_fail_msg("open %s\n", name);
                mmap_flags = MAP_SHARED;
        }
 
@@ -65,21 +71,21 @@ int main(int argc, char **argv)
 
        pagemap_fd = open("/proc/self/pagemap", O_RDONLY);
        if (pagemap_fd < 0)
-               err(2, "open pagemap");
+               ksft_exit_fail_msg("open pagemap\n");
 
        len -= len % HPAGE_SIZE;
        ptr = mmap(NULL, len + HPAGE_SIZE, PROT_RW, mmap_flags, backing_fd, 0);
        if (ptr == MAP_FAILED)
-               err(2, "initial mmap");
+               ksft_exit_fail_msg("initial mmap");
        ptr += HPAGE_SIZE - (uintptr_t)ptr % HPAGE_SIZE;
 
        if (madvise(ptr, len, MADV_HUGEPAGE))
-               err(2, "MADV_HUGEPAGE");
+               ksft_exit_fail_msg("MADV_HUGEPAGE");
 
        map_len = ram >> (HPAGE_SHIFT - 1);
        map = malloc(map_len);
        if (!map)
-               errx(2, "map malloc");
+               ksft_exit_fail_msg("map malloc\n");
 
        clock_gettime(CLOCK_MONOTONIC, &start);
 
@@ -103,7 +109,7 @@ int main(int argc, char **argv)
                                if (idx >= map_len) {
                                        map = realloc(map, idx + 1);
                                        if (!map)
-                                               errx(2, "map realloc");
+                                               ksft_exit_fail_msg("map realloc\n");
                                        memset(map + map_len, 0, idx + 1 - map_len);
                                        map_len = idx + 1;
                                }
@@ -114,17 +120,19 @@ int main(int argc, char **argv)
 
                        /* split transhuge page, keep last page */
                        if (madvise(p, HPAGE_SIZE - psize(), MADV_DONTNEED))
-                               err(2, "MADV_DONTNEED");
+                               ksft_exit_fail_msg("MADV_DONTNEED");
                }
                clock_gettime(CLOCK_MONOTONIC, &b);
                s = b.tv_sec - a.tv_sec + (b.tv_nsec - a.tv_nsec) / 1000000000.;
 
-               warnx("%.3f s/loop, %.3f ms/page, %10.3f MiB/s\t"
-                     "%4d succeed, %4d failed, %4d different pages",
-                     s, s * 1000 / (len >> HPAGE_SHIFT), len / s / (1 << 20),
-                     nr_succeed, nr_failed, nr_pages);
+               ksft_print_msg("%.3f s/loop, %.3f ms/page, %10.3f MiB/s\t"
+                              "%4d succeed, %4d failed, %4d different pages\n",
+                              s, s * 1000 / (len >> HPAGE_SHIFT), len / s / (1 << 20),
+                              nr_succeed, nr_failed, nr_pages);
 
-               if (duration > 0 && b.tv_sec - start.tv_sec >= duration)
-                       return 0;
+               if (duration > 0 && b.tv_sec - start.tv_sec >= duration) {
+                       ksft_test_result_pass("Completed\n");
+                       ksft_finished();
+               }
        }
 }
index 05736c615734fe9043c8378c1c06fc20e83c48c6..5a62530da3b563b38164fb9491bcc996cd323e33 100644 (file)
@@ -232,17 +232,17 @@ int64_t allocate_transhuge(void *ptr, int pagemap_fd)
        if (mmap(ptr, HPAGE_SIZE, PROT_READ | PROT_WRITE,
                 MAP_FIXED | MAP_ANONYMOUS |
                 MAP_NORESERVE | MAP_PRIVATE, -1, 0) != ptr)
-               errx(2, "mmap transhuge");
+               ksft_exit_fail_msg("mmap transhuge\n");
 
        if (madvise(ptr, HPAGE_SIZE, MADV_HUGEPAGE))
-               err(2, "MADV_HUGEPAGE");
+               ksft_exit_fail_msg("MADV_HUGEPAGE\n");
 
        /* allocate transparent huge page */
        *(volatile void **)ptr = ptr;
 
        if (pread(pagemap_fd, ent, sizeof(ent),
                  (uintptr_t)ptr >> (pshift() - 3)) != sizeof(ent))
-               err(2, "read pagemap");
+               ksft_exit_fail_msg("read pagemap\n");
 
        if (PAGEMAP_PRESENT(ent[0]) && PAGEMAP_PRESENT(ent[1]) &&
            PAGEMAP_PFN(ent[0]) + 1 == PAGEMAP_PFN(ent[1]) &&