Skip to content

Commit e2cfedf

Browse files
Muhammad Usama Anjumakpm00
authored andcommitted
mm/selftests: hugepage-mremap: conform test to TAP format output
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/20240102081919.2325570-1-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>
1 parent b805ab3 commit e2cfedf

1 file changed

Lines changed: 35 additions & 52 deletions

File tree

tools/testing/selftests/mm/hugepage-mremap.c

Lines changed: 35 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
#include <sys/ioctl.h>
2525
#include <string.h>
2626
#include <stdbool.h>
27+
#include "../kselftest.h"
2728
#include "vm_util.h"
2829

2930
#define DEFAULT_LENGTH_MB 10UL
@@ -34,7 +35,7 @@
3435

3536
static void check_bytes(char *addr)
3637
{
37-
printf("First hex is %x\n", *((unsigned int *)addr));
38+
ksft_print_msg("First hex is %x\n", *((unsigned int *)addr));
3839
}
3940

4041
static void write_bytes(char *addr, size_t len)
@@ -52,7 +53,7 @@ static int read_bytes(char *addr, size_t len)
5253
check_bytes(addr);
5354
for (i = 0; i < len; i++)
5455
if (*(addr + i) != (char)i) {
55-
printf("Mismatch at %lu\n", i);
56+
ksft_print_msg("Mismatch at %lu\n", i);
5657
return 1;
5758
}
5859
return 0;
@@ -66,17 +67,13 @@ static void register_region_with_uffd(char *addr, size_t len)
6667
/* Create and enable userfaultfd object. */
6768

6869
uffd = syscall(__NR_userfaultfd, O_CLOEXEC | O_NONBLOCK);
69-
if (uffd == -1) {
70-
perror("userfaultfd");
71-
exit(1);
72-
}
70+
if (uffd == -1)
71+
ksft_exit_fail_msg("userfaultfd: %s\n", strerror(errno));
7372

7473
uffdio_api.api = UFFD_API;
7574
uffdio_api.features = 0;
76-
if (ioctl(uffd, UFFDIO_API, &uffdio_api) == -1) {
77-
perror("ioctl-UFFDIO_API");
78-
exit(1);
79-
}
75+
if (ioctl(uffd, UFFDIO_API, &uffdio_api) == -1)
76+
ksft_exit_fail_msg("ioctl-UFFDIO_API: %s\n", strerror(errno));
8077

8178
/* Create a private anonymous mapping. The memory will be
8279
* demand-zero paged--that is, not yet allocated. When we
@@ -86,32 +83,29 @@ static void register_region_with_uffd(char *addr, size_t len)
8683

8784
addr = mmap(NULL, len, PROT_READ | PROT_WRITE,
8885
MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
89-
if (addr == MAP_FAILED) {
90-
perror("mmap");
91-
exit(1);
92-
}
86+
if (addr == MAP_FAILED)
87+
ksft_exit_fail_msg("mmap: %s\n", strerror(errno));
9388

94-
printf("Address returned by mmap() = %p\n", addr);
89+
ksft_print_msg("Address returned by mmap() = %p\n", addr);
9590

9691
/* Register the memory range of the mapping we just created for
9792
* handling by the userfaultfd object. In mode, we request to track
9893
* missing pages (i.e., pages that have not yet been faulted in).
9994
*/
100-
if (uffd_register(uffd, addr, len, true, false, false)) {
101-
perror("ioctl-UFFDIO_REGISTER");
102-
exit(1);
103-
}
95+
if (uffd_register(uffd, addr, len, true, false, false))
96+
ksft_exit_fail_msg("ioctl-UFFDIO_REGISTER: %s\n", strerror(errno));
10497
}
10598

10699
int main(int argc, char *argv[])
107100
{
108101
size_t length = 0;
109102
int ret = 0, fd;
110103

111-
if (argc >= 2 && !strcmp(argv[1], "-h")) {
112-
printf("Usage: %s [length_in_MB]\n", argv[0]);
113-
exit(1);
114-
}
104+
ksft_print_header();
105+
ksft_set_plan(1);
106+
107+
if (argc >= 2 && !strcmp(argv[1], "-h"))
108+
ksft_exit_fail_msg("Usage: %s [length_in_MB]\n", argv[0]);
115109

116110
/* Read memory length as the first arg if valid, otherwise fallback to
117111
* the default length.
@@ -123,63 +117,52 @@ int main(int argc, char *argv[])
123117

124118
length = MB_TO_BYTES(length);
125119
fd = memfd_create(argv[0], MFD_HUGETLB);
126-
if (fd < 0) {
127-
perror("Open failed");
128-
exit(1);
129-
}
120+
if (fd < 0)
121+
ksft_exit_fail_msg("Open failed: %s\n", strerror(errno));
130122

131123
/* mmap to a PUD aligned address to hopefully trigger pmd sharing. */
132124
unsigned long suggested_addr = 0x7eaa40000000;
133125
void *haddr = mmap((void *)suggested_addr, length, PROTECTION,
134126
MAP_HUGETLB | MAP_SHARED | MAP_POPULATE, fd, 0);
135-
printf("Map haddr: Returned address is %p\n", haddr);
136-
if (haddr == MAP_FAILED) {
137-
perror("mmap1");
138-
exit(1);
139-
}
127+
ksft_print_msg("Map haddr: Returned address is %p\n", haddr);
128+
if (haddr == MAP_FAILED)
129+
ksft_exit_fail_msg("mmap1: %s\n", strerror(errno));
140130

141131
/* mmap again to a dummy address to hopefully trigger pmd sharing. */
142132
suggested_addr = 0x7daa40000000;
143133
void *daddr = mmap((void *)suggested_addr, length, PROTECTION,
144134
MAP_HUGETLB | MAP_SHARED | MAP_POPULATE, fd, 0);
145-
printf("Map daddr: Returned address is %p\n", daddr);
146-
if (daddr == MAP_FAILED) {
147-
perror("mmap3");
148-
exit(1);
149-
}
135+
ksft_print_msg("Map daddr: Returned address is %p\n", daddr);
136+
if (daddr == MAP_FAILED)
137+
ksft_exit_fail_msg("mmap3: %s\n", strerror(errno));
150138

151139
suggested_addr = 0x7faa40000000;
152140
void *vaddr =
153141
mmap((void *)suggested_addr, length, PROTECTION, FLAGS, -1, 0);
154-
printf("Map vaddr: Returned address is %p\n", vaddr);
155-
if (vaddr == MAP_FAILED) {
156-
perror("mmap2");
157-
exit(1);
158-
}
142+
ksft_print_msg("Map vaddr: Returned address is %p\n", vaddr);
143+
if (vaddr == MAP_FAILED)
144+
ksft_exit_fail_msg("mmap2: %s\n", strerror(errno));
159145

160146
register_region_with_uffd(haddr, length);
161147

162148
void *addr = mremap(haddr, length, length,
163149
MREMAP_MAYMOVE | MREMAP_FIXED, vaddr);
164-
if (addr == MAP_FAILED) {
165-
perror("mremap");
166-
exit(1);
167-
}
150+
if (addr == MAP_FAILED)
151+
ksft_exit_fail_msg("mremap: %s\n", strerror(errno));
168152

169-
printf("Mremap: Returned address is %p\n", addr);
153+
ksft_print_msg("Mremap: Returned address is %p\n", addr);
170154
check_bytes(addr);
171155
write_bytes(addr, length);
172156
ret = read_bytes(addr, length);
173157

174158
munmap(addr, length);
175159

176160
addr = mremap(addr, length, length, 0);
177-
if (addr != MAP_FAILED) {
178-
printf("mremap: Expected failure, but call succeeded\n");
179-
exit(1);
180-
}
161+
if (addr != MAP_FAILED)
162+
ksft_exit_fail_msg("mremap: Expected failure, but call succeeded\n");
181163

182164
close(fd);
183165

184-
return ret;
166+
ksft_test_result(!ret, "Read same data\n");
167+
ksft_exit(!ret);
185168
}

0 commit comments

Comments
 (0)