diff options
author | Treehugger Robot <treehugger-gerrit@google.com> | 2022-03-15 19:32:46 +0000 |
---|---|---|
committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2022-03-15 19:32:46 +0000 |
commit | 9ce470534f66c547051715f8f3358f145ff46ae2 (patch) | |
tree | 96312845ee86cdd1fe783a1e5b12415b3d1b11d6 | |
parent | 2a68a7ccf4a08d0ac28fbaf22764d10ba53363d7 (diff) | |
parent | 43ae9976f0daa43bf5edf4527bf535e9d0c4a8e8 (diff) | |
download | runtime-9ce470534f66c547051715f8f3358f145ff46ae2.tar.gz |
Merge "Add UFFDIO_CONTINUE related changes to userfaultfd.h" am: 43ae9976f0
Original change: https://android-review.googlesource.com/c/platform/prebuilts/runtime/+/2025844
Change-Id: Ic0f74eb4fbb6feb9e04dd0c3ff7b6c466cf0ef27
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 |