Lines Matching refs:size
49 static bool range_maps_duplicates(char *addr, unsigned long size) in range_maps_duplicates() argument
58 for (offs_a = 0; offs_a < size; offs_a += pagesize) { in range_maps_duplicates()
64 for (offs_b = offs_a + pagesize; offs_b < size; in range_maps_duplicates()
158 static char *__mmap_and_merge_range(char val, unsigned long size, int prot, in __mmap_and_merge_range() argument
176 map = mmap(NULL, size, PROT_READ|PROT_WRITE, in __mmap_and_merge_range()
184 if (madvise(map, size, MADV_NOHUGEPAGE) && errno != EINVAL) { in __mmap_and_merge_range()
190 memset(map, val, size); in __mmap_and_merge_range()
192 if (mprotect(map, size, prot)) { in __mmap_and_merge_range()
211 if (madvise(map, size, MADV_MERGEABLE)) { in __mmap_and_merge_range()
237 munmap(map, size); in __mmap_and_merge_range()
241 static char *mmap_and_merge_range(char val, unsigned long size, int prot, in mmap_and_merge_range() argument
247 map = __mmap_and_merge_range(val, size, prot, mode); in mmap_and_merge_range()
260 const unsigned int size = 2 * MiB; in test_unmerge() local
265 map = mmap_and_merge_range(0xcf, size, PROT_READ | PROT_WRITE, KSM_MERGE_MADVISE); in test_unmerge()
269 if (madvise(map, size, MADV_UNMERGEABLE)) { in test_unmerge()
274 ksft_test_result(!range_maps_duplicates(map, size), in test_unmerge()
277 munmap(map, size); in test_unmerge()
282 const unsigned int size = 2 * MiB; in test_unmerge_zero_pages() local
303 map = mmap_and_merge_range(0x00, size, PROT_READ | PROT_WRITE, KSM_MERGE_MADVISE); in test_unmerge_zero_pages()
308 pages_expected = size / pagesize; in test_unmerge_zero_pages()
315 if (madvise(map, size / 2, MADV_UNMERGEABLE)) { in test_unmerge_zero_pages()
328 for (offs = size / 2; offs < size; offs += pagesize) in test_unmerge_zero_pages()
338 ksft_test_result(!range_maps_duplicates(map, size), in test_unmerge_zero_pages()
341 munmap(map, size); in test_unmerge_zero_pages()
346 const unsigned int size = 2 * MiB; in test_unmerge_discarded() local
351 map = mmap_and_merge_range(0xcf, size, PROT_READ | PROT_WRITE, KSM_MERGE_MADVISE); in test_unmerge_discarded()
356 if (madvise(map, size / 2, MADV_DONTNEED)) { in test_unmerge_discarded()
361 if (madvise(map, size, MADV_UNMERGEABLE)) { in test_unmerge_discarded()
366 ksft_test_result(!range_maps_duplicates(map, size), in test_unmerge_discarded()
369 munmap(map, size); in test_unmerge_discarded()
376 const unsigned int size = 2 * MiB; in test_unmerge_uffd_wp() local
383 map = mmap_and_merge_range(0xcf, size, PROT_READ | PROT_WRITE, KSM_MERGE_MADVISE); in test_unmerge_uffd_wp()
431 if (uffd_register(uffd, map, size, false, true, false)) { in test_unmerge_uffd_wp()
438 uffd_writeprotect.range.len = size; in test_unmerge_uffd_wp()
445 if (madvise(map, size, MADV_UNMERGEABLE)) { in test_unmerge_uffd_wp()
450 ksft_test_result(!range_maps_duplicates(map, size), in test_unmerge_uffd_wp()
455 munmap(map, size); in test_unmerge_uffd_wp()
504 const unsigned int size = 2 * MiB; in test_child_ksm() local
512 map = __mmap_and_merge_range(0xcf, size, PROT_READ | PROT_WRITE, KSM_MERGE_NONE); in test_child_ksm()
518 munmap(map, size); in test_child_ksm()
630 const unsigned int size = 2 * MiB; in test_prctl_unmerge() local
635 map = mmap_and_merge_range(0xcf, size, PROT_READ | PROT_WRITE, KSM_MERGE_PRCTL); in test_prctl_unmerge()
644 ksft_test_result(!range_maps_duplicates(map, size), in test_prctl_unmerge()
647 munmap(map, size); in test_prctl_unmerge()
652 const unsigned int size = 2 * MiB; in test_prot_none() local
658 map = mmap_and_merge_range(0x11, size, PROT_NONE, KSM_MERGE_MADVISE); in test_prot_none()
663 for (i = 0; i < size / 2; i += pagesize) { in test_prot_none()
672 if (madvise(map + size / 2, size / 2, MADV_UNMERGEABLE)) { in test_prot_none()
677 ksft_test_result(!range_maps_duplicates(map, size), in test_prot_none()
680 munmap(map, size); in test_prot_none()