Lines Matching refs:mem
112 static int child_memcmp_fn(char *mem, size_t size, in child_memcmp_fn() argument
119 memcpy(old, mem, size); in child_memcmp_fn()
127 return memcmp(old, mem, size); in child_memcmp_fn()
130 static int child_vmsplice_memcmp_fn(char *mem, size_t size, in child_vmsplice_memcmp_fn() argument
134 .iov_base = mem, in child_vmsplice_memcmp_fn()
146 memcpy(old, mem, size); in child_vmsplice_memcmp_fn()
159 if (munmap(mem, size) < 0) in child_vmsplice_memcmp_fn()
177 typedef int (*child_fn)(char *mem, size_t size, struct comm_pipes *comm_pipes);
179 static void do_test_cow_in_parent(char *mem, size_t size, bool do_mprotect, in do_test_cow_in_parent() argument
198 exit(fn(mem, size, &comm_pipes)); in do_test_cow_in_parent()
209 ret = mprotect(mem, size, PROT_READ); in do_test_cow_in_parent()
218 ret = mprotect(mem, size, PROT_READ|PROT_WRITE); in do_test_cow_in_parent()
229 memset(mem, 0xff, size); in do_test_cow_in_parent()
256 static void test_cow_in_parent(char *mem, size_t size, bool is_hugetlb) in test_cow_in_parent() argument
258 do_test_cow_in_parent(mem, size, false, child_memcmp_fn, false); in test_cow_in_parent()
261 static void test_cow_in_parent_mprotect(char *mem, size_t size, bool is_hugetlb) in test_cow_in_parent_mprotect() argument
263 do_test_cow_in_parent(mem, size, true, child_memcmp_fn, false); in test_cow_in_parent_mprotect()
266 static void test_vmsplice_in_child(char *mem, size_t size, bool is_hugetlb) in test_vmsplice_in_child() argument
268 do_test_cow_in_parent(mem, size, false, child_vmsplice_memcmp_fn, in test_vmsplice_in_child()
272 static void test_vmsplice_in_child_mprotect(char *mem, size_t size, in test_vmsplice_in_child_mprotect() argument
275 do_test_cow_in_parent(mem, size, true, child_vmsplice_memcmp_fn, in test_vmsplice_in_child_mprotect()
279 static void do_test_vmsplice_in_parent(char *mem, size_t size, in do_test_vmsplice_in_parent() argument
283 .iov_base = mem, in do_test_vmsplice_in_parent()
295 memcpy(old, mem, size); in do_test_vmsplice_in_parent()
328 memset(mem, 0xff, size); in do_test_vmsplice_in_parent()
344 if (munmap(mem, size) < 0) { in do_test_vmsplice_in_parent()
393 static void test_vmsplice_before_fork(char *mem, size_t size, bool is_hugetlb) in test_vmsplice_before_fork() argument
395 do_test_vmsplice_in_parent(mem, size, true, is_hugetlb); in test_vmsplice_before_fork()
398 static void test_vmsplice_after_fork(char *mem, size_t size, bool is_hugetlb) in test_vmsplice_after_fork() argument
400 do_test_vmsplice_in_parent(mem, size, false, is_hugetlb); in test_vmsplice_after_fork()
404 static void do_test_iouring(char *mem, size_t size, bool use_fork) in do_test_iouring() argument
453 iov.iov_base = mem; in do_test_iouring()
489 ret = mprotect(mem, size, PROT_READ); in do_test_iouring()
497 ret = mprotect(mem, size, PROT_READ | PROT_WRITE); in do_test_iouring()
509 memset(mem, 0xff, size); in do_test_iouring()
516 io_uring_prep_write_fixed(sqe, fd, mem, size, 0, 0); in do_test_iouring()
552 if (!memcmp(mem, tmp, size)) { in do_test_iouring()
576 static void test_iouring_ro(char *mem, size_t size, bool is_hugetlb) in test_iouring_ro() argument
578 do_test_iouring(mem, size, false); in test_iouring_ro()
581 static void test_iouring_fork(char *mem, size_t size, bool is_hugetlb) in test_iouring_fork() argument
583 do_test_iouring(mem, size, true); in test_iouring_fork()
595 static void do_test_ro_pin(char *mem, size_t size, enum ro_pin_test test, in do_test_ro_pin() argument
668 ret = mprotect(mem, size, PROT_READ); in do_test_ro_pin()
670 ret |= mprotect(mem, size, PROT_READ | PROT_WRITE); in do_test_ro_pin()
682 args.addr = (__u64)(uintptr_t)mem; in do_test_ro_pin()
697 memset(mem, 0xff, size); in do_test_ro_pin()
709 if (!memcmp(mem, tmp, size)) { in do_test_ro_pin()
737 static void test_ro_pin_on_shared(char *mem, size_t size, bool is_hugetlb) in test_ro_pin_on_shared() argument
739 do_test_ro_pin(mem, size, RO_PIN_TEST_SHARED, false); in test_ro_pin_on_shared()
742 static void test_ro_fast_pin_on_shared(char *mem, size_t size, bool is_hugetlb) in test_ro_fast_pin_on_shared() argument
744 do_test_ro_pin(mem, size, RO_PIN_TEST_SHARED, true); in test_ro_fast_pin_on_shared()
747 static void test_ro_pin_on_ro_previously_shared(char *mem, size_t size, in test_ro_pin_on_ro_previously_shared() argument
750 do_test_ro_pin(mem, size, RO_PIN_TEST_PREVIOUSLY_SHARED, false); in test_ro_pin_on_ro_previously_shared()
753 static void test_ro_fast_pin_on_ro_previously_shared(char *mem, size_t size, in test_ro_fast_pin_on_ro_previously_shared() argument
756 do_test_ro_pin(mem, size, RO_PIN_TEST_PREVIOUSLY_SHARED, true); in test_ro_fast_pin_on_ro_previously_shared()
759 static void test_ro_pin_on_ro_exclusive(char *mem, size_t size, in test_ro_pin_on_ro_exclusive() argument
762 do_test_ro_pin(mem, size, RO_PIN_TEST_RO_EXCLUSIVE, false); in test_ro_pin_on_ro_exclusive()
765 static void test_ro_fast_pin_on_ro_exclusive(char *mem, size_t size, in test_ro_fast_pin_on_ro_exclusive() argument
768 do_test_ro_pin(mem, size, RO_PIN_TEST_RO_EXCLUSIVE, true); in test_ro_fast_pin_on_ro_exclusive()
771 typedef void (*test_fn)(char *mem, size_t size, bool hugetlb);
775 char *mem; in do_run_with_base_page() local
778 mem = mmap(NULL, pagesize, PROT_READ | PROT_WRITE, in do_run_with_base_page()
780 if (mem == MAP_FAILED) { in do_run_with_base_page()
786 ret = madvise(mem, pagesize, MADV_NOHUGEPAGE); in do_run_with_base_page()
795 memset(mem, 1, pagesize); in do_run_with_base_page()
798 madvise(mem, pagesize, MADV_PAGEOUT); in do_run_with_base_page()
799 if (!pagemap_is_swapped(pagemap_fd, mem)) { in do_run_with_base_page()
806 fn(mem, pagesize, false); in do_run_with_base_page()
808 munmap(mem, pagesize); in do_run_with_base_page()
836 char *mem, *mmap_mem, *tmp, *mremap_mem = MAP_FAILED; in do_run_with_thp() local
851 mem = (char *)(((uintptr_t)mmap_mem + thpsize) & ~(thpsize - 1)); in do_run_with_thp()
853 ret = madvise(mem, thpsize, MADV_HUGEPAGE); in do_run_with_thp()
864 mem[0] = 1; in do_run_with_thp()
865 if (!pagemap_is_populated(pagemap_fd, mem + thpsize - pagesize)) { in do_run_with_thp()
870 memset(mem, 1, thpsize); in do_run_with_thp()
885 ret = mprotect(mem + pagesize, pagesize, PROT_READ); in do_run_with_thp()
891 ret = mprotect(mem + pagesize, pagesize, PROT_READ | PROT_WRITE); in do_run_with_thp()
904 ret = madvise(mem + pagesize, thpsize - pagesize, MADV_DONTNEED); in do_run_with_thp()
925 tmp = mremap(mem + mremap_size, mremap_size, mremap_size, in do_run_with_thp()
940 ret = madvise(mem + pagesize, thpsize - pagesize, MADV_DONTFORK); in do_run_with_thp()
956 ret = madvise(mem + pagesize, thpsize - pagesize, MADV_DOFORK); in do_run_with_thp()
971 madvise(mem, size, MADV_PAGEOUT); in do_run_with_thp()
972 if (!range_is_swapped(mem, size)) { in do_run_with_thp()
982 fn(mem, size, false); in do_run_with_thp()
1048 char *mem, *dummy; in run_with_hugetlb() local
1055 mem = mmap(NULL, hugetlbsize, PROT_READ | PROT_WRITE, flags, -1, 0); in run_with_hugetlb()
1056 if (mem == MAP_FAILED) { in run_with_hugetlb()
1063 memset(mem, 1, hugetlbsize); in run_with_hugetlb()
1077 fn(mem, hugetlbsize, true); in run_with_hugetlb()
1079 munmap(mem, hugetlbsize); in run_with_hugetlb()
1269 static void do_test_anon_thp_collapse(char *mem, size_t size, in do_test_anon_thp_collapse() argument
1286 ret = mprotect(mem + pagesize, pagesize, PROT_READ); in do_test_anon_thp_collapse()
1292 ret = mprotect(mem + pagesize, pagesize, PROT_READ | PROT_WRITE); in do_test_anon_thp_collapse()
1302 ret = madvise(mem, size, MADV_COLLAPSE); in do_test_anon_thp_collapse()
1314 ret = madvise(mem + size / 2, size / 2, MADV_DONTFORK); in do_test_anon_thp_collapse()
1323 ret = madvise(mem, size / 2, MADV_DONTFORK); in do_test_anon_thp_collapse()
1343 exit(child_memcmp_fn(mem, size, &comm_pipes)); in do_test_anon_thp_collapse()
1346 exit(child_memcmp_fn(mem, size / 2, &comm_pipes)); in do_test_anon_thp_collapse()
1349 exit(child_memcmp_fn(mem + size / 2, size / 2, in do_test_anon_thp_collapse()
1369 ret = madvise(mem, size, MADV_DOFORK); in do_test_anon_thp_collapse()
1380 ret = madvise(mem, size, MADV_COLLAPSE); in do_test_anon_thp_collapse()
1394 memset(mem, 0xff, size); in do_test_anon_thp_collapse()
1413 static void test_anon_thp_collapse_unshared(char *mem, size_t size, in test_anon_thp_collapse_unshared() argument
1417 do_test_anon_thp_collapse(mem, size, ANON_THP_COLLAPSE_UNSHARED); in test_anon_thp_collapse_unshared()
1420 static void test_anon_thp_collapse_fully_shared(char *mem, size_t size, in test_anon_thp_collapse_fully_shared() argument
1424 do_test_anon_thp_collapse(mem, size, ANON_THP_COLLAPSE_FULLY_SHARED); in test_anon_thp_collapse_fully_shared()
1427 static void test_anon_thp_collapse_lower_shared(char *mem, size_t size, in test_anon_thp_collapse_lower_shared() argument
1431 do_test_anon_thp_collapse(mem, size, ANON_THP_COLLAPSE_LOWER_SHARED); in test_anon_thp_collapse_lower_shared()
1434 static void test_anon_thp_collapse_upper_shared(char *mem, size_t size, in test_anon_thp_collapse_upper_shared() argument
1438 do_test_anon_thp_collapse(mem, size, ANON_THP_COLLAPSE_UPPER_SHARED); in test_anon_thp_collapse_upper_shared()
1503 typedef void (*non_anon_test_fn)(char *mem, const char *smem, size_t size);
1505 static void test_cow(char *mem, const char *smem, size_t size) in test_cow() argument
1513 memset(mem, 0xff, size); in test_cow()
1525 static void test_ro_pin(char *mem, const char *smem, size_t size) in test_ro_pin() argument
1527 do_test_ro_pin(mem, size, RO_PIN_TEST, false); in test_ro_pin()
1530 static void test_ro_fast_pin(char *mem, const char *smem, size_t size) in test_ro_fast_pin() argument
1532 do_test_ro_pin(mem, size, RO_PIN_TEST, true); in test_ro_fast_pin()
1537 char *mem, *smem; in run_with_zeropage() local
1541 mem = mmap(NULL, pagesize, PROT_READ | PROT_WRITE, in run_with_zeropage()
1543 if (mem == MAP_FAILED) { in run_with_zeropage()
1557 FORCE_READ(mem); in run_with_zeropage()
1560 fn(mem, smem, pagesize); in run_with_zeropage()
1562 munmap(mem, pagesize); in run_with_zeropage()
1569 char *mem, *smem, *mmap_mem, *mmap_smem; in run_with_huge_zeropage() local
1599 mem = (char *)(((uintptr_t)mmap_mem + pmdsize) & ~(pmdsize - 1)); in run_with_huge_zeropage()
1602 ret = madvise(mem, pmdsize, MADV_HUGEPAGE); in run_with_huge_zeropage()
1620 FORCE_READ(mem); in run_with_huge_zeropage()
1622 if (!pagemap_is_populated(pagemap_fd, mem + pagesize) || in run_with_huge_zeropage()
1628 fn(mem, smem, pmdsize); in run_with_huge_zeropage()
1637 char *mem, *smem; in run_with_memfd() local
1657 mem = mmap(NULL, pagesize, PROT_READ | PROT_WRITE, MAP_PRIVATE, fd, 0); in run_with_memfd()
1658 if (mem == MAP_FAILED) { in run_with_memfd()
1671 FORCE_READ(mem); in run_with_memfd()
1674 fn(mem, smem, pagesize); in run_with_memfd()
1676 munmap(mem, pagesize); in run_with_memfd()
1685 char *mem, *smem; in run_with_tmpfile() local
1713 mem = mmap(NULL, pagesize, PROT_READ | PROT_WRITE, MAP_PRIVATE, fd, 0); in run_with_tmpfile()
1714 if (mem == MAP_FAILED) { in run_with_tmpfile()
1727 FORCE_READ(mem); in run_with_tmpfile()
1730 fn(mem, smem, pagesize); in run_with_tmpfile()
1732 munmap(mem, pagesize); in run_with_tmpfile()
1743 char *mem, *smem; in run_with_memfd_hugetlb() local
1766 mem = mmap(NULL, hugetlbsize, PROT_READ | PROT_WRITE, MAP_PRIVATE, fd, in run_with_memfd_hugetlb()
1768 if (mem == MAP_FAILED) { in run_with_memfd_hugetlb()
1781 FORCE_READ(mem); in run_with_memfd_hugetlb()
1784 fn(mem, smem, hugetlbsize); in run_with_memfd_hugetlb()
1786 munmap(mem, hugetlbsize); in run_with_memfd_hugetlb()