return 0;
}
-static int ksm_unmerge_pages(void *addr, size_t size,
- struct timespec start_time, int timeout)
+static int ksm_unmerge_pages(void *addr, size_t size)
{
if (madvise(addr, size, MADV_UNMERGEABLE)) {
perror("madvise");
return get_next_mem_node(numa_max_node());
}
-static int check_ksm_numa_merge(int merge_type, int mapping, int prot, int timeout,
+static int check_ksm_numa_merge(int merge_type, int timeout,
bool merge_across_nodes, size_t page_size)
{
void *numa1_map_ptr, *numa2_map_ptr;
return KSFT_FAIL;
}
-static int ksm_merge_hugepages_time(int merge_type, int mapping, int prot,
- int timeout, size_t map_size)
+static int ksm_merge_hugepages_time(int merge_type, int timeout, size_t map_size)
{
void *map_ptr, *map_ptr_orig;
struct timespec start_time, end_time;
perror("clock_gettime");
goto err_out;
}
- if (ksm_unmerge_pages(map_ptr, map_size, start_time, timeout))
+ if (ksm_unmerge_pages(map_ptr, map_size))
goto err_out;
if (clock_gettime(CLOCK_MONOTONIC_RAW, &end_time)) {
perror("clock_gettime");
page_size);
break;
case CHECK_KSM_NUMA_MERGE:
- ret = check_ksm_numa_merge(merge_type, MAP_PRIVATE | MAP_ANONYMOUS, prot,
- ksm_scan_limit_sec, merge_across_nodes, page_size);
+ ret = check_ksm_numa_merge(merge_type, ksm_scan_limit_sec, merge_across_nodes,
+ page_size);
break;
case KSM_MERGE_TIME:
if (size_MB == 0) {
printf("Option '-s' is required.\n");
return KSFT_FAIL;
}
- ret = ksm_merge_hugepages_time(merge_type, MAP_PRIVATE | MAP_ANONYMOUS, prot,
- ksm_scan_limit_sec, size_MB);
+ ret = ksm_merge_hugepages_time(merge_type, ksm_scan_limit_sec, size_MB);
break;
case KSM_UNMERGE_TIME:
if (size_MB == 0) {
munmap(map2, pagesize);
}
-static void test_hugepage(int pagemap_fd, int pagesize)
+static void test_hugepage(int pagemap_fd)
{
char *map;
int i, ret;
test_simple(pagemap_fd, pagesize);
test_vma_reuse(pagemap_fd, pagesize);
- test_hugepage(pagemap_fd, pagesize);
+ test_hugepage(pagemap_fd);
test_mprotect_anon(pagemap_fd, pagesize);
test_mprotect_file(pagemap_fd, pagesize);
return result;
}
-static void verify_rss_anon_split_huge_page_all_zeroes(char *one_page, int nr_hpages, size_t len)
+static void verify_rss_anon_split_huge_page_all_zeroes(char *one_page, size_t len)
{
unsigned long rss_anon_before, rss_anon_after;
size_t i;
size_t len = nr_hpages * pmd_pagesize;
one_page = allocate_zero_filled_hugepage(len);
- verify_rss_anon_split_huge_page_all_zeroes(one_page, nr_hpages, len);
+ verify_rss_anon_split_huge_page_all_zeroes(one_page, len);
ksft_test_result_pass("Split zero filled huge pages successful\n");
free(one_page);
}
ret, (int64_t) req.mapped);
}
-int uffd_read_msg(int ufd, struct uffd_msg *msg)
+int uffd_read_msg(struct uffd_msg *msg)
{
int ret = read(uffd, msg, sizeof(*msg));
}
if (!(pollfd[0].revents & POLLIN))
err("pollfd[0].revents %d", pollfd[0].revents);
- if (uffd_read_msg(uffd, &msg))
+ if (uffd_read_msg(&msg))
continue;
switch (msg.event) {
default:
int uffd_test_ctx_init(uint64_t features, const char **errmsg);
void uffd_test_ctx_clear(void);
int userfaultfd_open(uint64_t *features);
-int uffd_read_msg(int ufd, struct uffd_msg *msg);
+int uffd_read_msg(struct uffd_msg *msg);
void wp_range(int ufd, __u64 start, __u64 len, bool wp);
void uffd_handle_page_fault(struct uffd_msg *msg, struct uffd_args *args);
int __copy_page(int ufd, unsigned long offset, bool retry, bool wp);
/* from here cancellation is ok */
for (;;) {
- if (uffd_read_msg(uffd, &msg))
+ if (uffd_read_msg(&msg))
continue;
uffd_handle_page_fault(&msg, args);
}
ready_for_fork = true;
/* Read until a full msg received */
- while (uffd_read_msg(args->parent_uffd, &msg));
+ while (uffd_read_msg(&msg));
if (msg.event != UFFD_EVENT_FORK)
err("wrong message: %u\n", msg.event);
return NULL;
}
-static void uffd_consume_message(int fd)
+static void uffd_consume_message(void)
{
struct uffd_msg msg = { 0 };
- while (uffd_read_msg(fd, &msg));
+ while (uffd_read_msg(&msg));
}
static void uffd_mmap_changing_test(uffd_test_args_t *targs)
* All succeeded above! Recycle everything. Start by reading the
* event so as to kick the thread roll again..
*/
- uffd_consume_message(uffd);
+ uffd_consume_message();
ret = pthread_join(tid, NULL);
assert(ret == 0);