[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 04/23] userfaultfd: linux/userfaultfd_k.h
From: |
Andrea Arcangeli |
Subject: |
[Qemu-devel] [PATCH 04/23] userfaultfd: linux/userfaultfd_k.h |
Date: |
Thu, 14 May 2015 19:31:01 +0200 |
Kernel header defining the methods needed by the VM common code to
interact with the userfaultfd.
Signed-off-by: Andrea Arcangeli <address@hidden>
---
include/linux/userfaultfd_k.h | 79 +++++++++++++++++++++++++++++++++++++++++++
1 file changed, 79 insertions(+)
create mode 100644 include/linux/userfaultfd_k.h
diff --git a/include/linux/userfaultfd_k.h b/include/linux/userfaultfd_k.h
new file mode 100644
index 0000000..e1e4360
--- /dev/null
+++ b/include/linux/userfaultfd_k.h
@@ -0,0 +1,79 @@
+/*
+ * include/linux/userfaultfd_k.h
+ *
+ * Copyright (C) 2015 Red Hat, Inc.
+ *
+ */
+
+#ifndef _LINUX_USERFAULTFD_K_H
+#define _LINUX_USERFAULTFD_K_H
+
+#ifdef CONFIG_USERFAULTFD
+
+#include <linux/userfaultfd.h> /* linux/include/uapi/linux/userfaultfd.h */
+
+#include <linux/fcntl.h>
+
+/*
+ * CAREFUL: Check include/uapi/asm-generic/fcntl.h when defining
+ * new flags, since they might collide with O_* ones. We want
+ * to re-use O_* flags that couldn't possibly have a meaning
+ * from userfaultfd, in order to leave a free define-space for
+ * shared O_* flags.
+ */
+#define UFFD_CLOEXEC O_CLOEXEC
+#define UFFD_NONBLOCK O_NONBLOCK
+
+#define UFFD_SHARED_FCNTL_FLAGS (O_CLOEXEC | O_NONBLOCK)
+#define UFFD_FLAGS_SET (EFD_SHARED_FCNTL_FLAGS)
+
+extern int handle_userfault(struct vm_area_struct *vma, unsigned long address,
+ unsigned int flags, unsigned long reason);
+
+/* mm helpers */
+static inline bool is_mergeable_vm_userfaultfd_ctx(struct vm_area_struct *vma,
+ struct vm_userfaultfd_ctx vm_ctx)
+{
+ return vma->vm_userfaultfd_ctx.ctx == vm_ctx.ctx;
+}
+
+static inline bool userfaultfd_missing(struct vm_area_struct *vma)
+{
+ return vma->vm_flags & VM_UFFD_MISSING;
+}
+
+static inline bool userfaultfd_armed(struct vm_area_struct *vma)
+{
+ return vma->vm_flags & (VM_UFFD_MISSING | VM_UFFD_WP);
+}
+
+#else /* CONFIG_USERFAULTFD */
+
+/* mm helpers */
+static inline int handle_userfault(struct vm_area_struct *vma,
+ unsigned long address,
+ unsigned int flags,
+ unsigned long reason)
+{
+ return VM_FAULT_SIGBUS;
+}
+
+static inline bool is_mergeable_vm_userfaultfd_ctx(struct vm_area_struct *vma,
+ struct vm_userfaultfd_ctx vm_ctx)
+{
+ return true;
+}
+
+static inline bool userfaultfd_missing(struct vm_area_struct *vma)
+{
+ return false;
+}
+
+static inline bool userfaultfd_armed(struct vm_area_struct *vma)
+{
+ return false;
+}
+
+#endif /* CONFIG_USERFAULTFD */
+
+#endif /* _LINUX_USERFAULTFD_K_H */
- [Qemu-devel] [PATCH 00/23] userfaultfd v4, Andrea Arcangeli, 2015/05/14
- [Qemu-devel] [PATCH 15/23] userfaultfd: optimize read() and poll() to be O(1), Andrea Arcangeli, 2015/05/14
- [Qemu-devel] [PATCH 05/23] userfaultfd: add vm_userfaultfd_ctx to the vm_area_struct, Andrea Arcangeli, 2015/05/14
- [Qemu-devel] [PATCH 18/23] userfaultfd: buildsystem activation, Andrea Arcangeli, 2015/05/14
- [Qemu-devel] [PATCH 20/23] userfaultfd: UFFDIO_COPY|UFFDIO_ZEROPAGE uAPI, Andrea Arcangeli, 2015/05/14
- [Qemu-devel] [PATCH 19/23] userfaultfd: activate syscall, Andrea Arcangeli, 2015/05/14
- [Qemu-devel] [PATCH 21/23] userfaultfd: mcopy_atomic|mfill_zeropage: UFFDIO_COPY|UFFDIO_ZEROPAGE preparation, Andrea Arcangeli, 2015/05/14
- [Qemu-devel] [PATCH 03/23] userfaultfd: uAPI, Andrea Arcangeli, 2015/05/14
- [Qemu-devel] [PATCH 17/23] userfaultfd: solve the race between UFFDIO_COPY|ZEROPAGE and read, Andrea Arcangeli, 2015/05/14
- [Qemu-devel] [PATCH 06/23] userfaultfd: add VM_UFFD_MISSING and VM_UFFD_WP, Andrea Arcangeli, 2015/05/14
- [Qemu-devel] [PATCH 04/23] userfaultfd: linux/userfaultfd_k.h,
Andrea Arcangeli <=
- [Qemu-devel] [PATCH 12/23] userfaultfd: Rename uffd_api.bits into .features fixup, Andrea Arcangeli, 2015/05/14
- [Qemu-devel] [PATCH 11/23] userfaultfd: Rename uffd_api.bits into .features, Andrea Arcangeli, 2015/05/14
- [Qemu-devel] [PATCH 09/23] userfaultfd: prevent khugepaged to merge if userfaultfd is armed, Andrea Arcangeli, 2015/05/14
- [Qemu-devel] [PATCH 22/23] userfaultfd: avoid mmap_sem read recursion in mcopy_atomic, Andrea Arcangeli, 2015/05/14
[Qemu-devel] [PATCH 14/23] userfaultfd: wake pending userfaults, Andrea Arcangeli, 2015/05/14
[Qemu-devel] [PATCH 02/23] userfaultfd: waitqueue: add nr wake parameter to __wake_up_locked_key, Andrea Arcangeli, 2015/05/14