Lines Matching refs:size
44 static int sz2ord(size_t size) in sz2ord() argument
46 return __builtin_ctzll(size / pagesize); in sz2ord()
100 static bool range_is_swapped(void *addr, size_t size) in range_is_swapped() argument
102 for (; size; addr += pagesize, size -= pagesize) in range_is_swapped()
134 static int child_memcmp_fn(char *mem, size_t size, in child_memcmp_fn() argument
137 char *old = malloc(size); in child_memcmp_fn()
141 memcpy(old, mem, size); in child_memcmp_fn()
149 return memcmp(old, mem, size); in child_memcmp_fn()
152 static int child_vmsplice_memcmp_fn(char *mem, size_t size, in child_vmsplice_memcmp_fn() argument
157 .iov_len = size, in child_vmsplice_memcmp_fn()
164 old = malloc(size); in child_vmsplice_memcmp_fn()
165 new = malloc(size); in child_vmsplice_memcmp_fn()
168 memcpy(old, mem, size); in child_vmsplice_memcmp_fn()
181 if (munmap(mem, size) < 0) in child_vmsplice_memcmp_fn()
199 typedef int (*child_fn)(char *mem, size_t size, struct comm_pipes *comm_pipes);
201 static void do_test_cow_in_parent(char *mem, size_t size, bool do_mprotect, in do_test_cow_in_parent() argument
219 exit(fn(mem, size, &comm_pipes)); in do_test_cow_in_parent()
230 ret = mprotect(mem, size, PROT_READ); in do_test_cow_in_parent()
231 ret |= mprotect(mem, size, PROT_READ|PROT_WRITE); in do_test_cow_in_parent()
241 memset(mem, 0xff, size); in do_test_cow_in_parent()
266 static void test_cow_in_parent(char *mem, size_t size, bool is_hugetlb) in test_cow_in_parent() argument
268 do_test_cow_in_parent(mem, size, false, child_memcmp_fn, false); in test_cow_in_parent()
271 static void test_cow_in_parent_mprotect(char *mem, size_t size, bool is_hugetlb) in test_cow_in_parent_mprotect() argument
273 do_test_cow_in_parent(mem, size, true, child_memcmp_fn, false); in test_cow_in_parent_mprotect()
276 static void test_vmsplice_in_child(char *mem, size_t size, bool is_hugetlb) in test_vmsplice_in_child() argument
278 do_test_cow_in_parent(mem, size, false, child_vmsplice_memcmp_fn, in test_vmsplice_in_child()
282 static void test_vmsplice_in_child_mprotect(char *mem, size_t size, in test_vmsplice_in_child_mprotect() argument
285 do_test_cow_in_parent(mem, size, true, child_vmsplice_memcmp_fn, in test_vmsplice_in_child_mprotect()
289 static void do_test_vmsplice_in_parent(char *mem, size_t size, in do_test_vmsplice_in_parent() argument
294 .iov_len = size, in do_test_vmsplice_in_parent()
302 old = malloc(size); in do_test_vmsplice_in_parent()
303 new = malloc(size); in do_test_vmsplice_in_parent()
305 memcpy(old, mem, size); in do_test_vmsplice_in_parent()
335 memset(mem, 0xff, size); in do_test_vmsplice_in_parent()
350 if (munmap(mem, size) < 0) { in do_test_vmsplice_in_parent()
394 static void test_vmsplice_before_fork(char *mem, size_t size, bool is_hugetlb) in test_vmsplice_before_fork() argument
396 do_test_vmsplice_in_parent(mem, size, true, is_hugetlb); in test_vmsplice_before_fork()
399 static void test_vmsplice_after_fork(char *mem, size_t size, bool is_hugetlb) in test_vmsplice_after_fork() argument
401 do_test_vmsplice_in_parent(mem, size, false, is_hugetlb); in test_vmsplice_after_fork()
405 static void do_test_iouring(char *mem, size_t size, bool use_fork) in do_test_iouring() argument
431 tmp = malloc(size); in do_test_iouring()
452 iov.iov_len = size; in do_test_iouring()
485 ret = mprotect(mem, size, PROT_READ); in do_test_iouring()
487 ret |= mprotect(mem, size, PROT_READ | PROT_WRITE); in do_test_iouring()
498 memset(mem, 0xff, size); in do_test_iouring()
504 io_uring_prep_write_fixed(sqe, fd, mem, size, 0, 0); in do_test_iouring()
518 if (cqe->res != size) { in do_test_iouring()
526 while (total < size) { in do_test_iouring()
527 cur = pread(fd, tmp + total, size - total, total); in do_test_iouring()
536 ksft_test_result(!memcmp(mem, tmp, size), in do_test_iouring()
556 static void test_iouring_ro(char *mem, size_t size, bool is_hugetlb) in test_iouring_ro() argument
558 do_test_iouring(mem, size, false); in test_iouring_ro()
561 static void test_iouring_fork(char *mem, size_t size, bool is_hugetlb) in test_iouring_fork() argument
563 do_test_iouring(mem, size, true); in test_iouring_fork()
575 static void do_test_ro_pin(char *mem, size_t size, enum ro_pin_test test, in do_test_ro_pin() argument
589 tmp = malloc(size); in do_test_ro_pin()
645 ret = mprotect(mem, size, PROT_READ); in do_test_ro_pin()
647 ret |= mprotect(mem, size, PROT_READ | PROT_WRITE); in do_test_ro_pin()
659 args.size = size; in do_test_ro_pin()
671 memset(mem, 0xff, size); in do_test_ro_pin()
682 ksft_test_result(!memcmp(mem, tmp, size), in do_test_ro_pin()
705 static void test_ro_pin_on_shared(char *mem, size_t size, bool is_hugetlb) in test_ro_pin_on_shared() argument
707 do_test_ro_pin(mem, size, RO_PIN_TEST_SHARED, false); in test_ro_pin_on_shared()
710 static void test_ro_fast_pin_on_shared(char *mem, size_t size, bool is_hugetlb) in test_ro_fast_pin_on_shared() argument
712 do_test_ro_pin(mem, size, RO_PIN_TEST_SHARED, true); in test_ro_fast_pin_on_shared()
715 static void test_ro_pin_on_ro_previously_shared(char *mem, size_t size, in test_ro_pin_on_ro_previously_shared() argument
718 do_test_ro_pin(mem, size, RO_PIN_TEST_PREVIOUSLY_SHARED, false); in test_ro_pin_on_ro_previously_shared()
721 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
724 do_test_ro_pin(mem, size, RO_PIN_TEST_PREVIOUSLY_SHARED, true); in test_ro_fast_pin_on_ro_previously_shared()
727 static void test_ro_pin_on_ro_exclusive(char *mem, size_t size, in test_ro_pin_on_ro_exclusive() argument
730 do_test_ro_pin(mem, size, RO_PIN_TEST_RO_EXCLUSIVE, false); in test_ro_pin_on_ro_exclusive()
733 static void test_ro_fast_pin_on_ro_exclusive(char *mem, size_t size, in test_ro_fast_pin_on_ro_exclusive() argument
736 do_test_ro_pin(mem, size, RO_PIN_TEST_RO_EXCLUSIVE, true); in test_ro_fast_pin_on_ro_exclusive()
739 typedef void (*test_fn)(char *mem, size_t size, bool hugetlb);
802 size_t size, mmap_size, mremap_size; in do_run_with_thp() local
834 size = thpsize; in do_run_with_thp()
869 size = pagesize; in do_run_with_thp()
889 size = mremap_size; in do_run_with_thp()
925 madvise(mem, size, MADV_PAGEOUT); in do_run_with_thp()
926 if (!range_is_swapped(mem, size)) { in do_run_with_thp()
935 fn(mem, size, false); in do_run_with_thp()
942 static void run_with_thp(test_fn fn, const char *desc, size_t size) in run_with_thp() argument
945 desc, size / 1024); in run_with_thp()
946 do_run_with_thp(fn, THP_RUN_PMD, size); in run_with_thp()
949 static void run_with_thp_swap(test_fn fn, const char *desc, size_t size) in run_with_thp_swap() argument
952 desc, size / 1024); in run_with_thp_swap()
953 do_run_with_thp(fn, THP_RUN_PMD_SWAPOUT, size); in run_with_thp_swap()
956 static void run_with_pte_mapped_thp(test_fn fn, const char *desc, size_t size) in run_with_pte_mapped_thp() argument
959 desc, size / 1024); in run_with_pte_mapped_thp()
960 do_run_with_thp(fn, THP_RUN_PTE, size); in run_with_pte_mapped_thp()
963 static void run_with_pte_mapped_thp_swap(test_fn fn, const char *desc, size_t size) in run_with_pte_mapped_thp_swap() argument
966 desc, size / 1024); in run_with_pte_mapped_thp_swap()
967 do_run_with_thp(fn, THP_RUN_PTE_SWAPOUT, size); in run_with_pte_mapped_thp_swap()
970 static void run_with_single_pte_of_thp(test_fn fn, const char *desc, size_t size) in run_with_single_pte_of_thp() argument
973 desc, size / 1024); in run_with_single_pte_of_thp()
974 do_run_with_thp(fn, THP_RUN_SINGLE_PTE, size); in run_with_single_pte_of_thp()
977 static void run_with_single_pte_of_thp_swap(test_fn fn, const char *desc, size_t size) in run_with_single_pte_of_thp_swap() argument
980 desc, size / 1024); in run_with_single_pte_of_thp_swap()
981 do_run_with_thp(fn, THP_RUN_SINGLE_PTE_SWAPOUT, size); in run_with_single_pte_of_thp_swap()
984 static void run_with_partial_mremap_thp(test_fn fn, const char *desc, size_t size) in run_with_partial_mremap_thp() argument
987 desc, size / 1024); in run_with_partial_mremap_thp()
988 do_run_with_thp(fn, THP_RUN_PARTIAL_MREMAP, size); in run_with_partial_mremap_thp()
991 static void run_with_partial_shared_thp(test_fn fn, const char *desc, size_t size) in run_with_partial_shared_thp() argument
994 desc, size / 1024); in run_with_partial_shared_thp()
995 do_run_with_thp(fn, THP_RUN_PARTIAL_SHARED, size); in run_with_partial_shared_thp()
1167 size_t size = thpsizes[i]; in run_anon_test_case() local
1171 settings.hugepages[sz2ord(size)].enabled = THP_ALWAYS; in run_anon_test_case()
1174 if (size == pmdsize) { in run_anon_test_case()
1175 run_with_thp(test_case->fn, test_case->desc, size); in run_anon_test_case()
1176 run_with_thp_swap(test_case->fn, test_case->desc, size); in run_anon_test_case()
1179 run_with_pte_mapped_thp(test_case->fn, test_case->desc, size); in run_anon_test_case()
1180 run_with_pte_mapped_thp_swap(test_case->fn, test_case->desc, size); in run_anon_test_case()
1181 run_with_single_pte_of_thp(test_case->fn, test_case->desc, size); in run_anon_test_case()
1182 run_with_single_pte_of_thp_swap(test_case->fn, test_case->desc, size); in run_anon_test_case()
1183 run_with_partial_mremap_thp(test_case->fn, test_case->desc, size); in run_anon_test_case()
1184 run_with_partial_shared_thp(test_case->fn, test_case->desc, size); in run_anon_test_case()
1220 static void do_test_anon_thp_collapse(char *mem, size_t size, in do_test_anon_thp_collapse() argument
1251 ret = madvise(mem, size, MADV_COLLAPSE); in do_test_anon_thp_collapse()
1263 ret = madvise(mem + size / 2, size / 2, MADV_DONTFORK); in do_test_anon_thp_collapse()
1271 ret = madvise(mem, size / 2, MADV_DONTFORK); in do_test_anon_thp_collapse()
1289 exit(child_memcmp_fn(mem, size, &comm_pipes)); in do_test_anon_thp_collapse()
1292 exit(child_memcmp_fn(mem, size / 2, &comm_pipes)); in do_test_anon_thp_collapse()
1295 exit(child_memcmp_fn(mem + size / 2, size / 2, in do_test_anon_thp_collapse()
1315 ret = madvise(mem, size, MADV_DOFORK); in do_test_anon_thp_collapse()
1325 ret = madvise(mem, size, MADV_COLLAPSE); in do_test_anon_thp_collapse()
1339 memset(mem, 0xff, size); in do_test_anon_thp_collapse()
1353 static void test_anon_thp_collapse_unshared(char *mem, size_t size, in test_anon_thp_collapse_unshared() argument
1357 do_test_anon_thp_collapse(mem, size, ANON_THP_COLLAPSE_UNSHARED); in test_anon_thp_collapse_unshared()
1360 static void test_anon_thp_collapse_fully_shared(char *mem, size_t size, in test_anon_thp_collapse_fully_shared() argument
1364 do_test_anon_thp_collapse(mem, size, ANON_THP_COLLAPSE_FULLY_SHARED); in test_anon_thp_collapse_fully_shared()
1367 static void test_anon_thp_collapse_lower_shared(char *mem, size_t size, in test_anon_thp_collapse_lower_shared() argument
1371 do_test_anon_thp_collapse(mem, size, ANON_THP_COLLAPSE_LOWER_SHARED); in test_anon_thp_collapse_lower_shared()
1374 static void test_anon_thp_collapse_upper_shared(char *mem, size_t size, in test_anon_thp_collapse_upper_shared() argument
1378 do_test_anon_thp_collapse(mem, size, ANON_THP_COLLAPSE_UPPER_SHARED); in test_anon_thp_collapse_upper_shared()
1443 typedef void (*non_anon_test_fn)(char *mem, const char *smem, size_t size);
1445 static void test_cow(char *mem, const char *smem, size_t size) in test_cow() argument
1447 char *old = malloc(size); in test_cow()
1450 memcpy(old, smem, size); in test_cow()
1453 memset(mem, 0xff, size); in test_cow()
1456 ksft_test_result(!memcmp(smem, old, size), in test_cow()
1461 static void test_ro_pin(char *mem, const char *smem, size_t size) in test_ro_pin() argument
1463 do_test_ro_pin(mem, size, RO_PIN_TEST, false); in test_ro_pin()
1466 static void test_ro_fast_pin(char *mem, const char *smem, size_t size) in test_ro_fast_pin() argument
1468 do_test_ro_pin(mem, size, RO_PIN_TEST, true); in test_ro_fast_pin()