Lines Matching +full:self +full:- +full:test

1 // SPDX-License-Identifier: GPL-2.0-or-later
30 self->page_size = (unsigned long)sysconf(_SC_PAGESIZE); in FIXTURE_SETUP()
31 self->pidfd = PIDFD_SELF; in FIXTURE_SETUP()
32 self->remote_pidfd = -1; in FIXTURE_SETUP()
33 self->child_pid = -1; in FIXTURE_SETUP()
39 if (self->child_pid > 0) { in FIXTURE_TEARDOWN_PARENT()
40 kill(self->child_pid, SIGKILL); in FIXTURE_TEARDOWN_PARENT()
41 waitpid(self->child_pid, NULL, 0); in FIXTURE_TEARDOWN_PARENT()
44 if (self->remote_pidfd >= 0) in FIXTURE_TEARDOWN_PARENT()
45 close(self->remote_pidfd); in FIXTURE_TEARDOWN_PARENT()
55 * This test uses PIDFD_SELF to target the current process. The main
57 * a vector of non-contiguous memory ranges, not its cross-process
62 const unsigned long pagesize = self->page_size; in TEST_F()
65 int pidfd = self->pidfd; in TEST_F()
71 * mapping to advise on. This ensures we test non-contiguous iovecs. in TEST_F()
74 MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); in TEST_F()
82 * Setup the iovec to point to 4 non-contiguous pages in TEST_F()
95 if (ret == -1 && errno == EPERM) in TEST_F()
113 /* Check that an un-advised page in between is still 'A'. */ in TEST_F()
124 * This test deterministically validates process_madvise() with MADV_COLLAPSE
127 * The test verifies that a memory region in a child process,
129 * The correctness of the MADV_COLLAPSE can be found in the relevant test examples in khugepaged.
133 const unsigned long pagesize = self->page_size; in TEST_F()
150 self->child_pid = fork(); in TEST_F()
151 ASSERT_NE(self->child_pid, -1); in TEST_F()
153 if (self->child_pid == 0) { in TEST_F()
160 MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); in TEST_F()
183 waitpid(self->child_pid, NULL, 0); in TEST_F()
188 self->child_pid = info.pid; in TEST_F()
190 self->remote_pidfd = syscall(__NR_pidfd_open, self->child_pid, 0); in TEST_F()
191 ASSERT_GE(self->remote_pidfd, 0); in TEST_F()
196 ret = sys_process_madvise(self->remote_pidfd, &vec, 1, MADV_COLLAPSE, in TEST_F()
198 if (ret == -1) { in TEST_F()
211 * Test process_madvise() with a pidfd for a process that has already
216 const unsigned long pagesize = self->page_size; in TEST_F()
221 map = mmap(NULL, pagesize, PROT_READ, MAP_PRIVATE | MAP_ANONYMOUS, -1, in TEST_F()
233 self->child_pid = fork(); in TEST_F()
234 ASSERT_NE(self->child_pid, -1); in TEST_F()
236 if (self->child_pid == 0) in TEST_F()
239 self->remote_pidfd = syscall(__NR_pidfd_open, self->child_pid, 0); in TEST_F()
240 ASSERT_GE(self->remote_pidfd, 0); in TEST_F()
243 waitpid(self->child_pid, NULL, 0); in TEST_F()
245 ret = sys_process_madvise(self->remote_pidfd, &vec, 1, MADV_DONTNEED, in TEST_F()
247 ASSERT_EQ(ret, -1); in TEST_F()
252 * Test process_madvise() with bad pidfds to ensure correct error
257 const unsigned long pagesize = self->page_size; in TEST_F()
262 map = mmap(NULL, pagesize, PROT_READ, MAP_PRIVATE | MAP_ANONYMOUS, -1, in TEST_F()
270 /* Using an invalid fd number (-1) should fail with EBADF. */ in TEST_F()
271 ret = sys_process_madvise(-1, &vec, 1, MADV_DONTNEED, 0); in TEST_F()
272 ASSERT_EQ(ret, -1); in TEST_F()
280 ASSERT_EQ(ret, -1); in TEST_F()
285 * Test that process_madvise() rejects vlen > UIO_MAXIOV.
286 * The kernel should return -EINVAL when the number of iovecs exceeds 1024.
290 const unsigned long pagesize = self->page_size; in TEST_F()
291 int pidfd = self->pidfd; in TEST_F()
296 map = mmap(NULL, pagesize, PROT_READ, MAP_PRIVATE | MAP_ANONYMOUS, -1, in TEST_F()
305 ASSERT_EQ(ret, -1); in TEST_F()
313 * Test process_madvise() with an invalid flag value. Currently, only a flag
314 * value of 0 is supported. This test is reserved for the future, e.g., if
319 const unsigned long pagesize = self->page_size; in TEST_F()
321 int pidfd = self->pidfd; in TEST_F()
326 map = mmap(NULL, pagesize, PROT_READ, MAP_PRIVATE | MAP_ANONYMOUS, -1, in TEST_F()
337 ASSERT_EQ(ret, -1); in TEST_F()