Lines Matching refs:uffdio_copy
557 static void retry_copy_page(int ufd, struct uffdio_copy *uffdio_copy,
560 uffd_test_ops->alias_mapping(&uffdio_copy->dst,
561 uffdio_copy->len,
563 if (ioctl(ufd, UFFDIO_COPY, uffdio_copy)) {
565 if (uffdio_copy->copy != -EEXIST)
567 (int64_t)uffdio_copy->copy);
570 (int64_t)uffdio_copy->copy);
588 struct uffdio_copy uffdio_copy;
592 uffdio_copy.dst = (unsigned long) area_dst + offset;
593 uffdio_copy.src = (unsigned long) area_src + offset;
594 uffdio_copy.len = page_size;
596 uffdio_copy.mode = UFFDIO_COPY_MODE_WP;
598 uffdio_copy.mode = 0;
599 uffdio_copy.copy = 0;
600 if (ioctl(ufd, UFFDIO_COPY, &uffdio_copy)) {
602 if (uffdio_copy.copy != -EEXIST)
604 (int64_t)uffdio_copy.copy);
605 wake_range(ufd, uffdio_copy.dst, page_size);
606 } else if (uffdio_copy.copy != page_size) {
607 err("UFFDIO_COPY error: %"PRId64, (int64_t)uffdio_copy.copy);
611 retry_copy_page(ufd, &uffdio_copy, offset);