|
@@ -317,7 +317,7 @@ static void *locking_thread(void *arg)
|
|
|
return NULL;
|
|
|
}
|
|
|
|
|
|
-static int copy_page(unsigned long offset)
|
|
|
+static int copy_page(int ufd, unsigned long offset)
|
|
|
{
|
|
|
struct uffdio_copy uffdio_copy;
|
|
|
|
|
@@ -329,7 +329,7 @@ static int copy_page(unsigned long offset)
|
|
|
uffdio_copy.len = page_size;
|
|
|
uffdio_copy.mode = 0;
|
|
|
uffdio_copy.copy = 0;
|
|
|
- if (ioctl(uffd, UFFDIO_COPY, &uffdio_copy)) {
|
|
|
+ if (ioctl(ufd, UFFDIO_COPY, &uffdio_copy)) {
|
|
|
/* real retval in ufdio_copy.copy */
|
|
|
if (uffdio_copy.copy != -EEXIST)
|
|
|
fprintf(stderr, "UFFDIO_COPY error %Ld\n",
|
|
@@ -386,7 +386,7 @@ static void *uffd_poll_thread(void *arg)
|
|
|
offset = (char *)(unsigned long)msg.arg.pagefault.address -
|
|
|
area_dst;
|
|
|
offset &= ~(page_size-1);
|
|
|
- if (copy_page(offset))
|
|
|
+ if (copy_page(uffd, offset))
|
|
|
userfaults++;
|
|
|
}
|
|
|
return (void *)userfaults;
|
|
@@ -424,7 +424,7 @@ static void *uffd_read_thread(void *arg)
|
|
|
offset = (char *)(unsigned long)msg.arg.pagefault.address -
|
|
|
area_dst;
|
|
|
offset &= ~(page_size-1);
|
|
|
- if (copy_page(offset))
|
|
|
+ if (copy_page(uffd, offset))
|
|
|
(*this_cpu_userfaults)++;
|
|
|
}
|
|
|
return (void *)NULL;
|
|
@@ -438,7 +438,7 @@ static void *background_thread(void *arg)
|
|
|
for (page_nr = cpu * nr_pages_per_cpu;
|
|
|
page_nr < (cpu+1) * nr_pages_per_cpu;
|
|
|
page_nr++)
|
|
|
- copy_page(page_nr * page_size);
|
|
|
+ copy_page(uffd, page_nr * page_size);
|
|
|
|
|
|
return NULL;
|
|
|
}
|