Lines Matching +full:addr +full:- +full:mode

2  * Linux UFFD-WP support
10 * later. See the COPYING file in the top-level directory.
15 #include "qemu/error-report.h"
58 return -EINVAL; in uffd_open()
73 int ret = -1; in uffd_query_features()
78 return -1; in uffd_query_features()
99 * Returns non-negative file descriptor or negative value in case of an error
102 * @non_blocking: create UFFD file descriptor for non-blocking operation
115 return -1; in uffd_create_fd()
133 return -1; in uffd_create_fd()
148 * uffd_register_memory: register memory range via UFFD-IO
153 * @addr: base address of memory range
155 * @mode: UFFD register mode (UFFDIO_REGISTER_MODE_MISSING, ...)
158 int uffd_register_memory(int uffd_fd, void *addr, uint64_t length, in uffd_register_memory() argument
159 uint64_t mode, uint64_t *ioctls) in uffd_register_memory() argument
163 uffd_register.range.start = (uintptr_t) addr; in uffd_register_memory()
165 uffd_register.mode = mode; in uffd_register_memory()
168 trace_uffd_register_memory_failed(addr, length, mode, errno); in uffd_register_memory()
169 return -1; in uffd_register_memory()
179 * uffd_unregister_memory: un-register memory range with UFFD-IO
184 * @addr: base address of memory range
187 int uffd_unregister_memory(int uffd_fd, void *addr, uint64_t length) in uffd_unregister_memory() argument
191 uffd_range.start = (uintptr_t) addr; in uffd_unregister_memory()
195 trace_uffd_unregister_memory_failed(addr, length, errno); in uffd_unregister_memory()
196 return -1; in uffd_unregister_memory()
203 * uffd_change_protection: protect/un-protect memory range for writes via UFFD-IO
208 * @addr: base address of memory range
210 * @wp: write-protect/unprotect
211 * @dont_wake: do not wake threads waiting on wr-protected page
213 int uffd_change_protection(int uffd_fd, void *addr, uint64_t length, in uffd_change_protection() argument
218 uffd_writeprotect.range.start = (uintptr_t) addr; in uffd_change_protection()
222 uffd_writeprotect.mode = UFFDIO_WRITEPROTECT_MODE_DONTWAKE; in uffd_change_protection()
224 uffd_writeprotect.mode = (wp ? UFFDIO_WRITEPROTECT_MODE_WP : 0); in uffd_change_protection()
228 error_report("uffd_change_protection() failed: addr=%p len=%" PRIu64 in uffd_change_protection()
229 " mode=%" PRIx64 " errno=%i", addr, length, in uffd_change_protection()
230 (uint64_t) uffd_writeprotect.mode, errno); in uffd_change_protection()
231 return -1; in uffd_change_protection()
238 * uffd_copy_page: copy range of pages to destination via UFFD-IO
243 * Returns 0 on success, -errno in case of an error
259 uffd_copy.mode = dont_wake ? UFFDIO_COPY_MODE_DONTWAKE : 0; in uffd_copy_page()
264 " mode=%" PRIx64 " errno=%i", dst_addr, src_addr, in uffd_copy_page()
265 length, (uint64_t) uffd_copy.mode, e); in uffd_copy_page()
266 return -e; in uffd_copy_page()
273 * uffd_zero_page: fill range of pages with zeroes via UFFD-IO
277 * Returns 0 on success, -errno in case of an error
280 * @addr: base address
284 int uffd_zero_page(int uffd_fd, void *addr, uint64_t length, bool dont_wake) in uffd_zero_page() argument
288 uffd_zeropage.range.start = (uintptr_t) addr; in uffd_zero_page()
290 uffd_zeropage.mode = dont_wake ? UFFDIO_ZEROPAGE_MODE_DONTWAKE : 0; in uffd_zero_page()
294 error_report("uffd_zero_page() failed: addr=%p length=%" PRIu64 in uffd_zero_page()
295 " mode=%" PRIx64 " errno=%i", addr, length, in uffd_zero_page()
296 (uint64_t) uffd_zeropage.mode, e); in uffd_zero_page()
297 return -e; in uffd_zero_page()
304 * uffd_wakeup: wake up threads waiting on page UFFD-managed page fault resolution
308 * via UFFD-IO IOCTLs with MODE_DONTWAKE flag set, then after that all waits
311 * Returns 0 on success, -errno in case of an error
314 * @addr: base address
317 int uffd_wakeup(int uffd_fd, void *addr, uint64_t length) in uffd_wakeup() argument
321 uffd_range.start = (uintptr_t) addr; in uffd_wakeup()
326 error_report("uffd_wakeup() failed: addr=%p length=%" PRIu64 " errno=%i", in uffd_wakeup()
327 addr, length, e); in uffd_wakeup()
328 return -e; in uffd_wakeup()
356 return -1; in uffd_read_events()