Lines Matching defs:uffd
29 int uffd = reader_args->uffd;
41 TEST_ASSERT(!epoll_ctl(epollfd, EPOLL_CTL_ADD, uffd, &evt),
42 "Failed to add uffd to epollfd");
66 "Error reading pipefd in uffd reader thread");
71 "Reader thread received EPOLLERR or EPOLLHUP on uffd.");
73 r = read(uffd, &msg, sizeof(msg));
81 "Read on uffd returned unexpected number of bytes (%d)", r);
88 r = reader_args->handler(reader_args->uffd_mode, uffd, &msg);
109 int uffd;
120 TEST_ASSERT(uffd_desc, "Failed to malloc uffd descriptor");
137 uffd = syscall(__NR_userfaultfd, O_CLOEXEC | O_NONBLOCK);
138 TEST_ASSERT(uffd >= 0, "uffd creation failed, errno: %d", errno);
142 TEST_ASSERT(ioctl(uffd, UFFDIO_API, &uffdio_api) != -1,
149 TEST_ASSERT(ioctl(uffd, UFFDIO_REGISTER, &uffdio_register) != -1,
154 uffd_desc->uffd = uffd;
165 uffd_desc->reader_args[i].uffd = uffd;
173 PER_VCPU_DEBUG("Created uffd thread %i for HVA range [%p, %p)\n",
180 void uffd_stop_demand_paging(struct uffd_desc *uffd)
185 for (i = 0; i < uffd->num_readers; ++i)
186 TEST_ASSERT(write(uffd->pipefds[i], &c, 1) == 1,
187 "Unable to write to pipefd %i for uffd_desc %p", i, uffd);
189 for (i = 0; i < uffd->num_readers; ++i)
190 TEST_ASSERT(!pthread_join(uffd->readers[i], NULL),
191 "Pthread_join failed on reader %i for uffd_desc %p", i, uffd);
193 close(uffd->uffd);
195 for (i = 0; i < uffd->num_readers; ++i) {
196 close(uffd->pipefds[i]);
197 close(uffd->reader_args[i].pipe);
200 free(uffd->pipefds);
201 free(uffd->readers);
202 free(uffd->reader_args);
203 free(uffd);