summaryrefslogtreecommitdiff
path: root/mainline
diff options
context:
space:
mode:
authorLokesh Gidra <lokeshgidra@google.com>2022-03-14 17:54:10 -0700
committerLokesh Gidra <lokeshgidra@google.com>2022-03-14 17:54:10 -0700
commitc8c5b12b02a44dd82448cfbaa52564e7f2100e78 (patch)
tree96312845ee86cdd1fe783a1e5b12415b3d1b11d6 /mainline
parent2a68a7ccf4a08d0ac28fbaf22764d10ba53363d7 (diff)
downloadruntime-c8c5b12b02a44dd82448cfbaa52564e7f2100e78.tar.gz
Add UFFDIO_CONTINUE related changes to userfaultfd.h
Update prebuilt sdk userfaultfd.h header file to include UFFDIO_CONTINUE related definitions. The files are updated from bionic(471bef4d34a666a5edfb2c0008dad89b6c6f1d76). Bug: 160737021 Test: build module on master-art using UFFDIO_CONTINUE Change-Id: Ie194c8916ec6748398bf32f886547359bbeaa4dc
Diffstat (limited to 'mainline')
-rw-r--r--mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/userfaultfd.h19
-rw-r--r--mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/userfaultfd.h19
-rw-r--r--mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/userfaultfd.h19
-rw-r--r--mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/userfaultfd.h19
-rw-r--r--mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/userfaultfd.h19
5 files changed, 80 insertions, 15 deletions
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/userfaultfd.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/userfaultfd.h
index fc100aeb..ca7b7a59 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/userfaultfd.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/userfaultfd.h
@@ -20,16 +20,18 @@
#define _LINUX_USERFAULTFD_H
#include <linux/types.h>
#define UFFD_API ((__u64) 0xAA)
-#define UFFD_API_FEATURES (UFFD_FEATURE_PAGEFAULT_FLAG_WP | UFFD_FEATURE_EVENT_FORK | UFFD_FEATURE_EVENT_REMAP | UFFD_FEATURE_EVENT_REMOVE | UFFD_FEATURE_EVENT_UNMAP | UFFD_FEATURE_MISSING_HUGETLBFS | UFFD_FEATURE_MISSING_SHMEM | UFFD_FEATURE_SIGBUS | UFFD_FEATURE_THREAD_ID)
+#define UFFD_API_REGISTER_MODES (UFFDIO_REGISTER_MODE_MISSING | UFFDIO_REGISTER_MODE_WP | UFFDIO_REGISTER_MODE_MINOR)
+#define UFFD_API_FEATURES (UFFD_FEATURE_PAGEFAULT_FLAG_WP | UFFD_FEATURE_EVENT_FORK | UFFD_FEATURE_EVENT_REMAP | UFFD_FEATURE_EVENT_REMOVE | UFFD_FEATURE_EVENT_UNMAP | UFFD_FEATURE_MISSING_HUGETLBFS | UFFD_FEATURE_MISSING_SHMEM | UFFD_FEATURE_SIGBUS | UFFD_FEATURE_THREAD_ID | UFFD_FEATURE_MINOR_HUGETLBFS | UFFD_FEATURE_MINOR_SHMEM)
#define UFFD_API_IOCTLS ((__u64) 1 << _UFFDIO_REGISTER | (__u64) 1 << _UFFDIO_UNREGISTER | (__u64) 1 << _UFFDIO_API)
-#define UFFD_API_RANGE_IOCTLS ((__u64) 1 << _UFFDIO_WAKE | (__u64) 1 << _UFFDIO_COPY | (__u64) 1 << _UFFDIO_ZEROPAGE | (__u64) 1 << _UFFDIO_WRITEPROTECT)
-#define UFFD_API_RANGE_IOCTLS_BASIC ((__u64) 1 << _UFFDIO_WAKE | (__u64) 1 << _UFFDIO_COPY)
+#define UFFD_API_RANGE_IOCTLS ((__u64) 1 << _UFFDIO_WAKE | (__u64) 1 << _UFFDIO_COPY | (__u64) 1 << _UFFDIO_ZEROPAGE | (__u64) 1 << _UFFDIO_WRITEPROTECT | (__u64) 1 << _UFFDIO_CONTINUE)
+#define UFFD_API_RANGE_IOCTLS_BASIC ((__u64) 1 << _UFFDIO_WAKE | (__u64) 1 << _UFFDIO_COPY | (__u64) 1 << _UFFDIO_CONTINUE)
#define _UFFDIO_REGISTER (0x00)
#define _UFFDIO_UNREGISTER (0x01)
#define _UFFDIO_WAKE (0x02)
#define _UFFDIO_COPY (0x03)
#define _UFFDIO_ZEROPAGE (0x04)
#define _UFFDIO_WRITEPROTECT (0x06)
+#define _UFFDIO_CONTINUE (0x07)
#define _UFFDIO_API (0x3F)
#define UFFDIO 0xAA
#define UFFDIO_API _IOWR(UFFDIO, _UFFDIO_API, struct uffdio_api)
@@ -39,6 +41,7 @@
#define UFFDIO_COPY _IOWR(UFFDIO, _UFFDIO_COPY, struct uffdio_copy)
#define UFFDIO_ZEROPAGE _IOWR(UFFDIO, _UFFDIO_ZEROPAGE, struct uffdio_zeropage)
#define UFFDIO_WRITEPROTECT _IOWR(UFFDIO, _UFFDIO_WRITEPROTECT, struct uffdio_writeprotect)
+#define UFFDIO_CONTINUE _IOWR(UFFDIO, _UFFDIO_CONTINUE, struct uffdio_continue)
struct uffd_msg {
__u8 event;
__u8 reserved1;
@@ -78,6 +81,7 @@ struct uffd_msg {
#define UFFD_EVENT_UNMAP 0x16
#define UFFD_PAGEFAULT_FLAG_WRITE (1 << 0)
#define UFFD_PAGEFAULT_FLAG_WP (1 << 1)
+#define UFFD_PAGEFAULT_FLAG_MINOR (1 << 2)
struct uffdio_api {
__u64 api;
#define UFFD_FEATURE_PAGEFAULT_FLAG_WP (1 << 0)
@@ -89,6 +93,8 @@ struct uffdio_api {
#define UFFD_FEATURE_EVENT_UNMAP (1 << 6)
#define UFFD_FEATURE_SIGBUS (1 << 7)
#define UFFD_FEATURE_THREAD_ID (1 << 8)
+#define UFFD_FEATURE_MINOR_HUGETLBFS (1 << 9)
+#define UFFD_FEATURE_MINOR_SHMEM (1 << 10)
__u64 features;
__u64 ioctls;
};
@@ -100,6 +106,7 @@ struct uffdio_register {
struct uffdio_range range;
#define UFFDIO_REGISTER_MODE_MISSING ((__u64) 1 << 0)
#define UFFDIO_REGISTER_MODE_WP ((__u64) 1 << 1)
+#define UFFDIO_REGISTER_MODE_MINOR ((__u64) 1 << 2)
__u64 mode;
__u64 ioctls;
};
@@ -124,5 +131,11 @@ struct uffdio_writeprotect {
#define UFFDIO_WRITEPROTECT_MODE_DONTWAKE ((__u64) 1 << 1)
__u64 mode;
};
+struct uffdio_continue {
+ struct uffdio_range range;
+#define UFFDIO_CONTINUE_MODE_DONTWAKE ((__u64) 1 << 0)
+ __u64 mode;
+ __s64 mapped;
+};
#define UFFD_USER_MODE_ONLY 1
#endif
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/userfaultfd.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/userfaultfd.h
index fc100aeb..ca7b7a59 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/userfaultfd.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/userfaultfd.h
@@ -20,16 +20,18 @@
#define _LINUX_USERFAULTFD_H
#include <linux/types.h>
#define UFFD_API ((__u64) 0xAA)
-#define UFFD_API_FEATURES (UFFD_FEATURE_PAGEFAULT_FLAG_WP | UFFD_FEATURE_EVENT_FORK | UFFD_FEATURE_EVENT_REMAP | UFFD_FEATURE_EVENT_REMOVE | UFFD_FEATURE_EVENT_UNMAP | UFFD_FEATURE_MISSING_HUGETLBFS | UFFD_FEATURE_MISSING_SHMEM | UFFD_FEATURE_SIGBUS | UFFD_FEATURE_THREAD_ID)
+#define UFFD_API_REGISTER_MODES (UFFDIO_REGISTER_MODE_MISSING | UFFDIO_REGISTER_MODE_WP | UFFDIO_REGISTER_MODE_MINOR)
+#define UFFD_API_FEATURES (UFFD_FEATURE_PAGEFAULT_FLAG_WP | UFFD_FEATURE_EVENT_FORK | UFFD_FEATURE_EVENT_REMAP | UFFD_FEATURE_EVENT_REMOVE | UFFD_FEATURE_EVENT_UNMAP | UFFD_FEATURE_MISSING_HUGETLBFS | UFFD_FEATURE_MISSING_SHMEM | UFFD_FEATURE_SIGBUS | UFFD_FEATURE_THREAD_ID | UFFD_FEATURE_MINOR_HUGETLBFS | UFFD_FEATURE_MINOR_SHMEM)
#define UFFD_API_IOCTLS ((__u64) 1 << _UFFDIO_REGISTER | (__u64) 1 << _UFFDIO_UNREGISTER | (__u64) 1 << _UFFDIO_API)
-#define UFFD_API_RANGE_IOCTLS ((__u64) 1 << _UFFDIO_WAKE | (__u64) 1 << _UFFDIO_COPY | (__u64) 1 << _UFFDIO_ZEROPAGE | (__u64) 1 << _UFFDIO_WRITEPROTECT)
-#define UFFD_API_RANGE_IOCTLS_BASIC ((__u64) 1 << _UFFDIO_WAKE | (__u64) 1 << _UFFDIO_COPY)
+#define UFFD_API_RANGE_IOCTLS ((__u64) 1 << _UFFDIO_WAKE | (__u64) 1 << _UFFDIO_COPY | (__u64) 1 << _UFFDIO_ZEROPAGE | (__u64) 1 << _UFFDIO_WRITEPROTECT | (__u64) 1 << _UFFDIO_CONTINUE)
+#define UFFD_API_RANGE_IOCTLS_BASIC ((__u64) 1 << _UFFDIO_WAKE | (__u64) 1 << _UFFDIO_COPY | (__u64) 1 << _UFFDIO_CONTINUE)
#define _UFFDIO_REGISTER (0x00)
#define _UFFDIO_UNREGISTER (0x01)
#define _UFFDIO_WAKE (0x02)
#define _UFFDIO_COPY (0x03)
#define _UFFDIO_ZEROPAGE (0x04)
#define _UFFDIO_WRITEPROTECT (0x06)
+#define _UFFDIO_CONTINUE (0x07)
#define _UFFDIO_API (0x3F)
#define UFFDIO 0xAA
#define UFFDIO_API _IOWR(UFFDIO, _UFFDIO_API, struct uffdio_api)
@@ -39,6 +41,7 @@
#define UFFDIO_COPY _IOWR(UFFDIO, _UFFDIO_COPY, struct uffdio_copy)
#define UFFDIO_ZEROPAGE _IOWR(UFFDIO, _UFFDIO_ZEROPAGE, struct uffdio_zeropage)
#define UFFDIO_WRITEPROTECT _IOWR(UFFDIO, _UFFDIO_WRITEPROTECT, struct uffdio_writeprotect)
+#define UFFDIO_CONTINUE _IOWR(UFFDIO, _UFFDIO_CONTINUE, struct uffdio_continue)
struct uffd_msg {
__u8 event;
__u8 reserved1;
@@ -78,6 +81,7 @@ struct uffd_msg {
#define UFFD_EVENT_UNMAP 0x16
#define UFFD_PAGEFAULT_FLAG_WRITE (1 << 0)
#define UFFD_PAGEFAULT_FLAG_WP (1 << 1)
+#define UFFD_PAGEFAULT_FLAG_MINOR (1 << 2)
struct uffdio_api {
__u64 api;
#define UFFD_FEATURE_PAGEFAULT_FLAG_WP (1 << 0)
@@ -89,6 +93,8 @@ struct uffdio_api {
#define UFFD_FEATURE_EVENT_UNMAP (1 << 6)
#define UFFD_FEATURE_SIGBUS (1 << 7)
#define UFFD_FEATURE_THREAD_ID (1 << 8)
+#define UFFD_FEATURE_MINOR_HUGETLBFS (1 << 9)
+#define UFFD_FEATURE_MINOR_SHMEM (1 << 10)
__u64 features;
__u64 ioctls;
};
@@ -100,6 +106,7 @@ struct uffdio_register {
struct uffdio_range range;
#define UFFDIO_REGISTER_MODE_MISSING ((__u64) 1 << 0)
#define UFFDIO_REGISTER_MODE_WP ((__u64) 1 << 1)
+#define UFFDIO_REGISTER_MODE_MINOR ((__u64) 1 << 2)
__u64 mode;
__u64 ioctls;
};
@@ -124,5 +131,11 @@ struct uffdio_writeprotect {
#define UFFDIO_WRITEPROTECT_MODE_DONTWAKE ((__u64) 1 << 1)
__u64 mode;
};
+struct uffdio_continue {
+ struct uffdio_range range;
+#define UFFDIO_CONTINUE_MODE_DONTWAKE ((__u64) 1 << 0)
+ __u64 mode;
+ __s64 mapped;
+};
#define UFFD_USER_MODE_ONLY 1
#endif
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/userfaultfd.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/userfaultfd.h
index fc100aeb..ca7b7a59 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/userfaultfd.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/userfaultfd.h
@@ -20,16 +20,18 @@
#define _LINUX_USERFAULTFD_H
#include <linux/types.h>
#define UFFD_API ((__u64) 0xAA)
-#define UFFD_API_FEATURES (UFFD_FEATURE_PAGEFAULT_FLAG_WP | UFFD_FEATURE_EVENT_FORK | UFFD_FEATURE_EVENT_REMAP | UFFD_FEATURE_EVENT_REMOVE | UFFD_FEATURE_EVENT_UNMAP | UFFD_FEATURE_MISSING_HUGETLBFS | UFFD_FEATURE_MISSING_SHMEM | UFFD_FEATURE_SIGBUS | UFFD_FEATURE_THREAD_ID)
+#define UFFD_API_REGISTER_MODES (UFFDIO_REGISTER_MODE_MISSING | UFFDIO_REGISTER_MODE_WP | UFFDIO_REGISTER_MODE_MINOR)
+#define UFFD_API_FEATURES (UFFD_FEATURE_PAGEFAULT_FLAG_WP | UFFD_FEATURE_EVENT_FORK | UFFD_FEATURE_EVENT_REMAP | UFFD_FEATURE_EVENT_REMOVE | UFFD_FEATURE_EVENT_UNMAP | UFFD_FEATURE_MISSING_HUGETLBFS | UFFD_FEATURE_MISSING_SHMEM | UFFD_FEATURE_SIGBUS | UFFD_FEATURE_THREAD_ID | UFFD_FEATURE_MINOR_HUGETLBFS | UFFD_FEATURE_MINOR_SHMEM)
#define UFFD_API_IOCTLS ((__u64) 1 << _UFFDIO_REGISTER | (__u64) 1 << _UFFDIO_UNREGISTER | (__u64) 1 << _UFFDIO_API)
-#define UFFD_API_RANGE_IOCTLS ((__u64) 1 << _UFFDIO_WAKE | (__u64) 1 << _UFFDIO_COPY | (__u64) 1 << _UFFDIO_ZEROPAGE | (__u64) 1 << _UFFDIO_WRITEPROTECT)
-#define UFFD_API_RANGE_IOCTLS_BASIC ((__u64) 1 << _UFFDIO_WAKE | (__u64) 1 << _UFFDIO_COPY)
+#define UFFD_API_RANGE_IOCTLS ((__u64) 1 << _UFFDIO_WAKE | (__u64) 1 << _UFFDIO_COPY | (__u64) 1 << _UFFDIO_ZEROPAGE | (__u64) 1 << _UFFDIO_WRITEPROTECT | (__u64) 1 << _UFFDIO_CONTINUE)
+#define UFFD_API_RANGE_IOCTLS_BASIC ((__u64) 1 << _UFFDIO_WAKE | (__u64) 1 << _UFFDIO_COPY | (__u64) 1 << _UFFDIO_CONTINUE)
#define _UFFDIO_REGISTER (0x00)
#define _UFFDIO_UNREGISTER (0x01)
#define _UFFDIO_WAKE (0x02)
#define _UFFDIO_COPY (0x03)
#define _UFFDIO_ZEROPAGE (0x04)
#define _UFFDIO_WRITEPROTECT (0x06)
+#define _UFFDIO_CONTINUE (0x07)
#define _UFFDIO_API (0x3F)
#define UFFDIO 0xAA
#define UFFDIO_API _IOWR(UFFDIO, _UFFDIO_API, struct uffdio_api)
@@ -39,6 +41,7 @@
#define UFFDIO_COPY _IOWR(UFFDIO, _UFFDIO_COPY, struct uffdio_copy)
#define UFFDIO_ZEROPAGE _IOWR(UFFDIO, _UFFDIO_ZEROPAGE, struct uffdio_zeropage)
#define UFFDIO_WRITEPROTECT _IOWR(UFFDIO, _UFFDIO_WRITEPROTECT, struct uffdio_writeprotect)
+#define UFFDIO_CONTINUE _IOWR(UFFDIO, _UFFDIO_CONTINUE, struct uffdio_continue)
struct uffd_msg {
__u8 event;
__u8 reserved1;
@@ -78,6 +81,7 @@ struct uffd_msg {
#define UFFD_EVENT_UNMAP 0x16
#define UFFD_PAGEFAULT_FLAG_WRITE (1 << 0)
#define UFFD_PAGEFAULT_FLAG_WP (1 << 1)
+#define UFFD_PAGEFAULT_FLAG_MINOR (1 << 2)
struct uffdio_api {
__u64 api;
#define UFFD_FEATURE_PAGEFAULT_FLAG_WP (1 << 0)
@@ -89,6 +93,8 @@ struct uffdio_api {
#define UFFD_FEATURE_EVENT_UNMAP (1 << 6)
#define UFFD_FEATURE_SIGBUS (1 << 7)
#define UFFD_FEATURE_THREAD_ID (1 << 8)
+#define UFFD_FEATURE_MINOR_HUGETLBFS (1 << 9)
+#define UFFD_FEATURE_MINOR_SHMEM (1 << 10)
__u64 features;
__u64 ioctls;
};
@@ -100,6 +106,7 @@ struct uffdio_register {
struct uffdio_range range;
#define UFFDIO_REGISTER_MODE_MISSING ((__u64) 1 << 0)
#define UFFDIO_REGISTER_MODE_WP ((__u64) 1 << 1)
+#define UFFDIO_REGISTER_MODE_MINOR ((__u64) 1 << 2)
__u64 mode;
__u64 ioctls;
};
@@ -124,5 +131,11 @@ struct uffdio_writeprotect {
#define UFFDIO_WRITEPROTECT_MODE_DONTWAKE ((__u64) 1 << 1)
__u64 mode;
};
+struct uffdio_continue {
+ struct uffdio_range range;
+#define UFFDIO_CONTINUE_MODE_DONTWAKE ((__u64) 1 << 0)
+ __u64 mode;
+ __s64 mapped;
+};
#define UFFD_USER_MODE_ONLY 1
#endif
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/userfaultfd.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/userfaultfd.h
index fc100aeb..ca7b7a59 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/userfaultfd.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/userfaultfd.h
@@ -20,16 +20,18 @@
#define _LINUX_USERFAULTFD_H
#include <linux/types.h>
#define UFFD_API ((__u64) 0xAA)
-#define UFFD_API_FEATURES (UFFD_FEATURE_PAGEFAULT_FLAG_WP | UFFD_FEATURE_EVENT_FORK | UFFD_FEATURE_EVENT_REMAP | UFFD_FEATURE_EVENT_REMOVE | UFFD_FEATURE_EVENT_UNMAP | UFFD_FEATURE_MISSING_HUGETLBFS | UFFD_FEATURE_MISSING_SHMEM | UFFD_FEATURE_SIGBUS | UFFD_FEATURE_THREAD_ID)
+#define UFFD_API_REGISTER_MODES (UFFDIO_REGISTER_MODE_MISSING | UFFDIO_REGISTER_MODE_WP | UFFDIO_REGISTER_MODE_MINOR)
+#define UFFD_API_FEATURES (UFFD_FEATURE_PAGEFAULT_FLAG_WP | UFFD_FEATURE_EVENT_FORK | UFFD_FEATURE_EVENT_REMAP | UFFD_FEATURE_EVENT_REMOVE | UFFD_FEATURE_EVENT_UNMAP | UFFD_FEATURE_MISSING_HUGETLBFS | UFFD_FEATURE_MISSING_SHMEM | UFFD_FEATURE_SIGBUS | UFFD_FEATURE_THREAD_ID | UFFD_FEATURE_MINOR_HUGETLBFS | UFFD_FEATURE_MINOR_SHMEM)
#define UFFD_API_IOCTLS ((__u64) 1 << _UFFDIO_REGISTER | (__u64) 1 << _UFFDIO_UNREGISTER | (__u64) 1 << _UFFDIO_API)
-#define UFFD_API_RANGE_IOCTLS ((__u64) 1 << _UFFDIO_WAKE | (__u64) 1 << _UFFDIO_COPY | (__u64) 1 << _UFFDIO_ZEROPAGE | (__u64) 1 << _UFFDIO_WRITEPROTECT)
-#define UFFD_API_RANGE_IOCTLS_BASIC ((__u64) 1 << _UFFDIO_WAKE | (__u64) 1 << _UFFDIO_COPY)
+#define UFFD_API_RANGE_IOCTLS ((__u64) 1 << _UFFDIO_WAKE | (__u64) 1 << _UFFDIO_COPY | (__u64) 1 << _UFFDIO_ZEROPAGE | (__u64) 1 << _UFFDIO_WRITEPROTECT | (__u64) 1 << _UFFDIO_CONTINUE)
+#define UFFD_API_RANGE_IOCTLS_BASIC ((__u64) 1 << _UFFDIO_WAKE | (__u64) 1 << _UFFDIO_COPY | (__u64) 1 << _UFFDIO_CONTINUE)
#define _UFFDIO_REGISTER (0x00)
#define _UFFDIO_UNREGISTER (0x01)
#define _UFFDIO_WAKE (0x02)
#define _UFFDIO_COPY (0x03)
#define _UFFDIO_ZEROPAGE (0x04)
#define _UFFDIO_WRITEPROTECT (0x06)
+#define _UFFDIO_CONTINUE (0x07)
#define _UFFDIO_API (0x3F)
#define UFFDIO 0xAA
#define UFFDIO_API _IOWR(UFFDIO, _UFFDIO_API, struct uffdio_api)
@@ -39,6 +41,7 @@
#define UFFDIO_COPY _IOWR(UFFDIO, _UFFDIO_COPY, struct uffdio_copy)
#define UFFDIO_ZEROPAGE _IOWR(UFFDIO, _UFFDIO_ZEROPAGE, struct uffdio_zeropage)
#define UFFDIO_WRITEPROTECT _IOWR(UFFDIO, _UFFDIO_WRITEPROTECT, struct uffdio_writeprotect)
+#define UFFDIO_CONTINUE _IOWR(UFFDIO, _UFFDIO_CONTINUE, struct uffdio_continue)
struct uffd_msg {
__u8 event;
__u8 reserved1;
@@ -78,6 +81,7 @@ struct uffd_msg {
#define UFFD_EVENT_UNMAP 0x16
#define UFFD_PAGEFAULT_FLAG_WRITE (1 << 0)
#define UFFD_PAGEFAULT_FLAG_WP (1 << 1)
+#define UFFD_PAGEFAULT_FLAG_MINOR (1 << 2)
struct uffdio_api {
__u64 api;
#define UFFD_FEATURE_PAGEFAULT_FLAG_WP (1 << 0)
@@ -89,6 +93,8 @@ struct uffdio_api {
#define UFFD_FEATURE_EVENT_UNMAP (1 << 6)
#define UFFD_FEATURE_SIGBUS (1 << 7)
#define UFFD_FEATURE_THREAD_ID (1 << 8)
+#define UFFD_FEATURE_MINOR_HUGETLBFS (1 << 9)
+#define UFFD_FEATURE_MINOR_SHMEM (1 << 10)
__u64 features;
__u64 ioctls;
};
@@ -100,6 +106,7 @@ struct uffdio_register {
struct uffdio_range range;
#define UFFDIO_REGISTER_MODE_MISSING ((__u64) 1 << 0)
#define UFFDIO_REGISTER_MODE_WP ((__u64) 1 << 1)
+#define UFFDIO_REGISTER_MODE_MINOR ((__u64) 1 << 2)
__u64 mode;
__u64 ioctls;
};
@@ -124,5 +131,11 @@ struct uffdio_writeprotect {
#define UFFDIO_WRITEPROTECT_MODE_DONTWAKE ((__u64) 1 << 1)
__u64 mode;
};
+struct uffdio_continue {
+ struct uffdio_range range;
+#define UFFDIO_CONTINUE_MODE_DONTWAKE ((__u64) 1 << 0)
+ __u64 mode;
+ __s64 mapped;
+};
#define UFFD_USER_MODE_ONLY 1
#endif
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/userfaultfd.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/userfaultfd.h
index fc100aeb..ca7b7a59 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/userfaultfd.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/userfaultfd.h
@@ -20,16 +20,18 @@
#define _LINUX_USERFAULTFD_H
#include <linux/types.h>
#define UFFD_API ((__u64) 0xAA)
-#define UFFD_API_FEATURES (UFFD_FEATURE_PAGEFAULT_FLAG_WP | UFFD_FEATURE_EVENT_FORK | UFFD_FEATURE_EVENT_REMAP | UFFD_FEATURE_EVENT_REMOVE | UFFD_FEATURE_EVENT_UNMAP | UFFD_FEATURE_MISSING_HUGETLBFS | UFFD_FEATURE_MISSING_SHMEM | UFFD_FEATURE_SIGBUS | UFFD_FEATURE_THREAD_ID)
+#define UFFD_API_REGISTER_MODES (UFFDIO_REGISTER_MODE_MISSING | UFFDIO_REGISTER_MODE_WP | UFFDIO_REGISTER_MODE_MINOR)
+#define UFFD_API_FEATURES (UFFD_FEATURE_PAGEFAULT_FLAG_WP | UFFD_FEATURE_EVENT_FORK | UFFD_FEATURE_EVENT_REMAP | UFFD_FEATURE_EVENT_REMOVE | UFFD_FEATURE_EVENT_UNMAP | UFFD_FEATURE_MISSING_HUGETLBFS | UFFD_FEATURE_MISSING_SHMEM | UFFD_FEATURE_SIGBUS | UFFD_FEATURE_THREAD_ID | UFFD_FEATURE_MINOR_HUGETLBFS | UFFD_FEATURE_MINOR_SHMEM)
#define UFFD_API_IOCTLS ((__u64) 1 << _UFFDIO_REGISTER | (__u64) 1 << _UFFDIO_UNREGISTER | (__u64) 1 << _UFFDIO_API)
-#define UFFD_API_RANGE_IOCTLS ((__u64) 1 << _UFFDIO_WAKE | (__u64) 1 << _UFFDIO_COPY | (__u64) 1 << _UFFDIO_ZEROPAGE | (__u64) 1 << _UFFDIO_WRITEPROTECT)
-#define UFFD_API_RANGE_IOCTLS_BASIC ((__u64) 1 << _UFFDIO_WAKE | (__u64) 1 << _UFFDIO_COPY)
+#define UFFD_API_RANGE_IOCTLS ((__u64) 1 << _UFFDIO_WAKE | (__u64) 1 << _UFFDIO_COPY | (__u64) 1 << _UFFDIO_ZEROPAGE | (__u64) 1 << _UFFDIO_WRITEPROTECT | (__u64) 1 << _UFFDIO_CONTINUE)
+#define UFFD_API_RANGE_IOCTLS_BASIC ((__u64) 1 << _UFFDIO_WAKE | (__u64) 1 << _UFFDIO_COPY | (__u64) 1 << _UFFDIO_CONTINUE)
#define _UFFDIO_REGISTER (0x00)
#define _UFFDIO_UNREGISTER (0x01)
#define _UFFDIO_WAKE (0x02)
#define _UFFDIO_COPY (0x03)
#define _UFFDIO_ZEROPAGE (0x04)
#define _UFFDIO_WRITEPROTECT (0x06)
+#define _UFFDIO_CONTINUE (0x07)
#define _UFFDIO_API (0x3F)
#define UFFDIO 0xAA
#define UFFDIO_API _IOWR(UFFDIO, _UFFDIO_API, struct uffdio_api)
@@ -39,6 +41,7 @@
#define UFFDIO_COPY _IOWR(UFFDIO, _UFFDIO_COPY, struct uffdio_copy)
#define UFFDIO_ZEROPAGE _IOWR(UFFDIO, _UFFDIO_ZEROPAGE, struct uffdio_zeropage)
#define UFFDIO_WRITEPROTECT _IOWR(UFFDIO, _UFFDIO_WRITEPROTECT, struct uffdio_writeprotect)
+#define UFFDIO_CONTINUE _IOWR(UFFDIO, _UFFDIO_CONTINUE, struct uffdio_continue)
struct uffd_msg {
__u8 event;
__u8 reserved1;
@@ -78,6 +81,7 @@ struct uffd_msg {
#define UFFD_EVENT_UNMAP 0x16
#define UFFD_PAGEFAULT_FLAG_WRITE (1 << 0)
#define UFFD_PAGEFAULT_FLAG_WP (1 << 1)
+#define UFFD_PAGEFAULT_FLAG_MINOR (1 << 2)
struct uffdio_api {
__u64 api;
#define UFFD_FEATURE_PAGEFAULT_FLAG_WP (1 << 0)
@@ -89,6 +93,8 @@ struct uffdio_api {
#define UFFD_FEATURE_EVENT_UNMAP (1 << 6)
#define UFFD_FEATURE_SIGBUS (1 << 7)
#define UFFD_FEATURE_THREAD_ID (1 << 8)
+#define UFFD_FEATURE_MINOR_HUGETLBFS (1 << 9)
+#define UFFD_FEATURE_MINOR_SHMEM (1 << 10)
__u64 features;
__u64 ioctls;
};
@@ -100,6 +106,7 @@ struct uffdio_register {
struct uffdio_range range;
#define UFFDIO_REGISTER_MODE_MISSING ((__u64) 1 << 0)
#define UFFDIO_REGISTER_MODE_WP ((__u64) 1 << 1)
+#define UFFDIO_REGISTER_MODE_MINOR ((__u64) 1 << 2)
__u64 mode;
__u64 ioctls;
};
@@ -124,5 +131,11 @@ struct uffdio_writeprotect {
#define UFFDIO_WRITEPROTECT_MODE_DONTWAKE ((__u64) 1 << 1)
__u64 mode;
};
+struct uffdio_continue {
+ struct uffdio_range range;
+#define UFFDIO_CONTINUE_MODE_DONTWAKE ((__u64) 1 << 0)
+ __u64 mode;
+ __s64 mapped;
+};
#define UFFD_USER_MODE_ONLY 1
#endif