diff options
author | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2022-03-17 01:10:04 +0000 |
---|---|---|
committer | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2022-03-17 01:10:04 +0000 |
commit | 6ba87f6a21901457b6413889c64afcf289725a91 (patch) | |
tree | 96312845ee86cdd1fe783a1e5b12415b3d1b11d6 | |
parent | ad312fab6368599969f61fb4f22fd17c14a4ba2b (diff) | |
parent | 8dcd43be129b411c2b15f295b9a3a8c68b7983ba (diff) | |
download | runtime-6ba87f6a21901457b6413889c64afcf289725a91.tar.gz |
Snap for 8310722 from 8dcd43be129b411c2b15f295b9a3a8c68b7983ba to tm-release
Change-Id: I0ee32e57374adbc89e88c172e670dfca52b41e8a
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 |