1*8d67ca89SAndroid Build Coastguard Worker /* 2*8d67ca89SAndroid Build Coastguard Worker * This file is auto-generated. Modifications will be lost. 3*8d67ca89SAndroid Build Coastguard Worker * 4*8d67ca89SAndroid Build Coastguard Worker * See https://android.googlesource.com/platform/bionic/+/master/libc/kernel/ 5*8d67ca89SAndroid Build Coastguard Worker * for more information. 6*8d67ca89SAndroid Build Coastguard Worker */ 7*8d67ca89SAndroid Build Coastguard Worker #ifndef _LINUX_USERFAULTFD_H 8*8d67ca89SAndroid Build Coastguard Worker #define _LINUX_USERFAULTFD_H 9*8d67ca89SAndroid Build Coastguard Worker #include <linux/types.h> 10*8d67ca89SAndroid Build Coastguard Worker #define USERFAULTFD_IOC 0xAA 11*8d67ca89SAndroid Build Coastguard Worker #define USERFAULTFD_IOC_NEW _IO(USERFAULTFD_IOC, 0x00) 12*8d67ca89SAndroid Build Coastguard Worker #define UFFD_API ((__u64) 0xAA) 13*8d67ca89SAndroid Build Coastguard Worker #define UFFD_API_REGISTER_MODES (UFFDIO_REGISTER_MODE_MISSING | UFFDIO_REGISTER_MODE_WP | UFFDIO_REGISTER_MODE_MINOR) 14*8d67ca89SAndroid Build Coastguard Worker #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 | UFFD_FEATURE_EXACT_ADDRESS | UFFD_FEATURE_WP_HUGETLBFS_SHMEM | UFFD_FEATURE_WP_UNPOPULATED | UFFD_FEATURE_POISON | UFFD_FEATURE_WP_ASYNC | UFFD_FEATURE_MOVE) 15*8d67ca89SAndroid Build Coastguard Worker #define UFFD_API_IOCTLS ((__u64) 1 << _UFFDIO_REGISTER | (__u64) 1 << _UFFDIO_UNREGISTER | (__u64) 1 << _UFFDIO_API) 16*8d67ca89SAndroid Build Coastguard Worker #define UFFD_API_RANGE_IOCTLS ((__u64) 1 << _UFFDIO_WAKE | (__u64) 1 << _UFFDIO_COPY | (__u64) 1 << _UFFDIO_ZEROPAGE | (__u64) 1 << _UFFDIO_MOVE | (__u64) 1 << _UFFDIO_WRITEPROTECT | (__u64) 1 << _UFFDIO_CONTINUE | (__u64) 1 << _UFFDIO_POISON) 17*8d67ca89SAndroid Build Coastguard Worker #define UFFD_API_RANGE_IOCTLS_BASIC ((__u64) 1 << _UFFDIO_WAKE | (__u64) 1 << _UFFDIO_COPY | (__u64) 1 << _UFFDIO_WRITEPROTECT | (__u64) 1 << _UFFDIO_CONTINUE | (__u64) 1 << _UFFDIO_POISON) 18*8d67ca89SAndroid Build Coastguard Worker #define _UFFDIO_REGISTER (0x00) 19*8d67ca89SAndroid Build Coastguard Worker #define _UFFDIO_UNREGISTER (0x01) 20*8d67ca89SAndroid Build Coastguard Worker #define _UFFDIO_WAKE (0x02) 21*8d67ca89SAndroid Build Coastguard Worker #define _UFFDIO_COPY (0x03) 22*8d67ca89SAndroid Build Coastguard Worker #define _UFFDIO_ZEROPAGE (0x04) 23*8d67ca89SAndroid Build Coastguard Worker #define _UFFDIO_MOVE (0x05) 24*8d67ca89SAndroid Build Coastguard Worker #define _UFFDIO_WRITEPROTECT (0x06) 25*8d67ca89SAndroid Build Coastguard Worker #define _UFFDIO_CONTINUE (0x07) 26*8d67ca89SAndroid Build Coastguard Worker #define _UFFDIO_POISON (0x08) 27*8d67ca89SAndroid Build Coastguard Worker #define _UFFDIO_API (0x3F) 28*8d67ca89SAndroid Build Coastguard Worker #define UFFDIO 0xAA 29*8d67ca89SAndroid Build Coastguard Worker #define UFFDIO_API _IOWR(UFFDIO, _UFFDIO_API, struct uffdio_api) 30*8d67ca89SAndroid Build Coastguard Worker #define UFFDIO_REGISTER _IOWR(UFFDIO, _UFFDIO_REGISTER, struct uffdio_register) 31*8d67ca89SAndroid Build Coastguard Worker #define UFFDIO_UNREGISTER _IOR(UFFDIO, _UFFDIO_UNREGISTER, struct uffdio_range) 32*8d67ca89SAndroid Build Coastguard Worker #define UFFDIO_WAKE _IOR(UFFDIO, _UFFDIO_WAKE, struct uffdio_range) 33*8d67ca89SAndroid Build Coastguard Worker #define UFFDIO_COPY _IOWR(UFFDIO, _UFFDIO_COPY, struct uffdio_copy) 34*8d67ca89SAndroid Build Coastguard Worker #define UFFDIO_ZEROPAGE _IOWR(UFFDIO, _UFFDIO_ZEROPAGE, struct uffdio_zeropage) 35*8d67ca89SAndroid Build Coastguard Worker #define UFFDIO_MOVE _IOWR(UFFDIO, _UFFDIO_MOVE, struct uffdio_move) 36*8d67ca89SAndroid Build Coastguard Worker #define UFFDIO_WRITEPROTECT _IOWR(UFFDIO, _UFFDIO_WRITEPROTECT, struct uffdio_writeprotect) 37*8d67ca89SAndroid Build Coastguard Worker #define UFFDIO_CONTINUE _IOWR(UFFDIO, _UFFDIO_CONTINUE, struct uffdio_continue) 38*8d67ca89SAndroid Build Coastguard Worker #define UFFDIO_POISON _IOWR(UFFDIO, _UFFDIO_POISON, struct uffdio_poison) 39*8d67ca89SAndroid Build Coastguard Worker struct uffd_msg { 40*8d67ca89SAndroid Build Coastguard Worker __u8 event; 41*8d67ca89SAndroid Build Coastguard Worker __u8 reserved1; 42*8d67ca89SAndroid Build Coastguard Worker __u16 reserved2; 43*8d67ca89SAndroid Build Coastguard Worker __u32 reserved3; 44*8d67ca89SAndroid Build Coastguard Worker union { 45*8d67ca89SAndroid Build Coastguard Worker struct { 46*8d67ca89SAndroid Build Coastguard Worker __u64 flags; 47*8d67ca89SAndroid Build Coastguard Worker __u64 address; 48*8d67ca89SAndroid Build Coastguard Worker union { 49*8d67ca89SAndroid Build Coastguard Worker __u32 ptid; 50*8d67ca89SAndroid Build Coastguard Worker } feat; 51*8d67ca89SAndroid Build Coastguard Worker } pagefault; 52*8d67ca89SAndroid Build Coastguard Worker struct { 53*8d67ca89SAndroid Build Coastguard Worker __u32 ufd; 54*8d67ca89SAndroid Build Coastguard Worker } fork; 55*8d67ca89SAndroid Build Coastguard Worker struct { 56*8d67ca89SAndroid Build Coastguard Worker __u64 from; 57*8d67ca89SAndroid Build Coastguard Worker __u64 to; 58*8d67ca89SAndroid Build Coastguard Worker __u64 len; 59*8d67ca89SAndroid Build Coastguard Worker } remap; 60*8d67ca89SAndroid Build Coastguard Worker struct { 61*8d67ca89SAndroid Build Coastguard Worker __u64 start; 62*8d67ca89SAndroid Build Coastguard Worker __u64 end; 63*8d67ca89SAndroid Build Coastguard Worker } remove; 64*8d67ca89SAndroid Build Coastguard Worker struct { 65*8d67ca89SAndroid Build Coastguard Worker __u64 reserved1; 66*8d67ca89SAndroid Build Coastguard Worker __u64 reserved2; 67*8d67ca89SAndroid Build Coastguard Worker __u64 reserved3; 68*8d67ca89SAndroid Build Coastguard Worker } reserved; 69*8d67ca89SAndroid Build Coastguard Worker } arg; 70*8d67ca89SAndroid Build Coastguard Worker } __attribute__((__packed__)); 71*8d67ca89SAndroid Build Coastguard Worker #define UFFD_EVENT_PAGEFAULT 0x12 72*8d67ca89SAndroid Build Coastguard Worker #define UFFD_EVENT_FORK 0x13 73*8d67ca89SAndroid Build Coastguard Worker #define UFFD_EVENT_REMAP 0x14 74*8d67ca89SAndroid Build Coastguard Worker #define UFFD_EVENT_REMOVE 0x15 75*8d67ca89SAndroid Build Coastguard Worker #define UFFD_EVENT_UNMAP 0x16 76*8d67ca89SAndroid Build Coastguard Worker #define UFFD_PAGEFAULT_FLAG_WRITE (1 << 0) 77*8d67ca89SAndroid Build Coastguard Worker #define UFFD_PAGEFAULT_FLAG_WP (1 << 1) 78*8d67ca89SAndroid Build Coastguard Worker #define UFFD_PAGEFAULT_FLAG_MINOR (1 << 2) 79*8d67ca89SAndroid Build Coastguard Worker struct uffdio_api { 80*8d67ca89SAndroid Build Coastguard Worker __u64 api; 81*8d67ca89SAndroid Build Coastguard Worker #define UFFD_FEATURE_PAGEFAULT_FLAG_WP (1 << 0) 82*8d67ca89SAndroid Build Coastguard Worker #define UFFD_FEATURE_EVENT_FORK (1 << 1) 83*8d67ca89SAndroid Build Coastguard Worker #define UFFD_FEATURE_EVENT_REMAP (1 << 2) 84*8d67ca89SAndroid Build Coastguard Worker #define UFFD_FEATURE_EVENT_REMOVE (1 << 3) 85*8d67ca89SAndroid Build Coastguard Worker #define UFFD_FEATURE_MISSING_HUGETLBFS (1 << 4) 86*8d67ca89SAndroid Build Coastguard Worker #define UFFD_FEATURE_MISSING_SHMEM (1 << 5) 87*8d67ca89SAndroid Build Coastguard Worker #define UFFD_FEATURE_EVENT_UNMAP (1 << 6) 88*8d67ca89SAndroid Build Coastguard Worker #define UFFD_FEATURE_SIGBUS (1 << 7) 89*8d67ca89SAndroid Build Coastguard Worker #define UFFD_FEATURE_THREAD_ID (1 << 8) 90*8d67ca89SAndroid Build Coastguard Worker #define UFFD_FEATURE_MINOR_HUGETLBFS (1 << 9) 91*8d67ca89SAndroid Build Coastguard Worker #define UFFD_FEATURE_MINOR_SHMEM (1 << 10) 92*8d67ca89SAndroid Build Coastguard Worker #define UFFD_FEATURE_EXACT_ADDRESS (1 << 11) 93*8d67ca89SAndroid Build Coastguard Worker #define UFFD_FEATURE_WP_HUGETLBFS_SHMEM (1 << 12) 94*8d67ca89SAndroid Build Coastguard Worker #define UFFD_FEATURE_WP_UNPOPULATED (1 << 13) 95*8d67ca89SAndroid Build Coastguard Worker #define UFFD_FEATURE_POISON (1 << 14) 96*8d67ca89SAndroid Build Coastguard Worker #define UFFD_FEATURE_WP_ASYNC (1 << 15) 97*8d67ca89SAndroid Build Coastguard Worker #define UFFD_FEATURE_MOVE (1 << 16) 98*8d67ca89SAndroid Build Coastguard Worker __u64 features; 99*8d67ca89SAndroid Build Coastguard Worker __u64 ioctls; 100*8d67ca89SAndroid Build Coastguard Worker }; 101*8d67ca89SAndroid Build Coastguard Worker struct uffdio_range { 102*8d67ca89SAndroid Build Coastguard Worker __u64 start; 103*8d67ca89SAndroid Build Coastguard Worker __u64 len; 104*8d67ca89SAndroid Build Coastguard Worker }; 105*8d67ca89SAndroid Build Coastguard Worker struct uffdio_register { 106*8d67ca89SAndroid Build Coastguard Worker struct uffdio_range range; 107*8d67ca89SAndroid Build Coastguard Worker #define UFFDIO_REGISTER_MODE_MISSING ((__u64) 1 << 0) 108*8d67ca89SAndroid Build Coastguard Worker #define UFFDIO_REGISTER_MODE_WP ((__u64) 1 << 1) 109*8d67ca89SAndroid Build Coastguard Worker #define UFFDIO_REGISTER_MODE_MINOR ((__u64) 1 << 2) 110*8d67ca89SAndroid Build Coastguard Worker __u64 mode; 111*8d67ca89SAndroid Build Coastguard Worker __u64 ioctls; 112*8d67ca89SAndroid Build Coastguard Worker }; 113*8d67ca89SAndroid Build Coastguard Worker struct uffdio_copy { 114*8d67ca89SAndroid Build Coastguard Worker __u64 dst; 115*8d67ca89SAndroid Build Coastguard Worker __u64 src; 116*8d67ca89SAndroid Build Coastguard Worker __u64 len; 117*8d67ca89SAndroid Build Coastguard Worker #define UFFDIO_COPY_MODE_DONTWAKE ((__u64) 1 << 0) 118*8d67ca89SAndroid Build Coastguard Worker #define UFFDIO_COPY_MODE_WP ((__u64) 1 << 1) 119*8d67ca89SAndroid Build Coastguard Worker __u64 mode; 120*8d67ca89SAndroid Build Coastguard Worker __s64 copy; 121*8d67ca89SAndroid Build Coastguard Worker }; 122*8d67ca89SAndroid Build Coastguard Worker struct uffdio_zeropage { 123*8d67ca89SAndroid Build Coastguard Worker struct uffdio_range range; 124*8d67ca89SAndroid Build Coastguard Worker #define UFFDIO_ZEROPAGE_MODE_DONTWAKE ((__u64) 1 << 0) 125*8d67ca89SAndroid Build Coastguard Worker __u64 mode; 126*8d67ca89SAndroid Build Coastguard Worker __s64 zeropage; 127*8d67ca89SAndroid Build Coastguard Worker }; 128*8d67ca89SAndroid Build Coastguard Worker struct uffdio_writeprotect { 129*8d67ca89SAndroid Build Coastguard Worker struct uffdio_range range; 130*8d67ca89SAndroid Build Coastguard Worker #define UFFDIO_WRITEPROTECT_MODE_WP ((__u64) 1 << 0) 131*8d67ca89SAndroid Build Coastguard Worker #define UFFDIO_WRITEPROTECT_MODE_DONTWAKE ((__u64) 1 << 1) 132*8d67ca89SAndroid Build Coastguard Worker __u64 mode; 133*8d67ca89SAndroid Build Coastguard Worker }; 134*8d67ca89SAndroid Build Coastguard Worker struct uffdio_continue { 135*8d67ca89SAndroid Build Coastguard Worker struct uffdio_range range; 136*8d67ca89SAndroid Build Coastguard Worker #define UFFDIO_CONTINUE_MODE_DONTWAKE ((__u64) 1 << 0) 137*8d67ca89SAndroid Build Coastguard Worker #define UFFDIO_CONTINUE_MODE_WP ((__u64) 1 << 1) 138*8d67ca89SAndroid Build Coastguard Worker __u64 mode; 139*8d67ca89SAndroid Build Coastguard Worker __s64 mapped; 140*8d67ca89SAndroid Build Coastguard Worker }; 141*8d67ca89SAndroid Build Coastguard Worker struct uffdio_poison { 142*8d67ca89SAndroid Build Coastguard Worker struct uffdio_range range; 143*8d67ca89SAndroid Build Coastguard Worker #define UFFDIO_POISON_MODE_DONTWAKE ((__u64) 1 << 0) 144*8d67ca89SAndroid Build Coastguard Worker __u64 mode; 145*8d67ca89SAndroid Build Coastguard Worker __s64 updated; 146*8d67ca89SAndroid Build Coastguard Worker }; 147*8d67ca89SAndroid Build Coastguard Worker struct uffdio_move { 148*8d67ca89SAndroid Build Coastguard Worker __u64 dst; 149*8d67ca89SAndroid Build Coastguard Worker __u64 src; 150*8d67ca89SAndroid Build Coastguard Worker __u64 len; 151*8d67ca89SAndroid Build Coastguard Worker #define UFFDIO_MOVE_MODE_DONTWAKE ((__u64) 1 << 0) 152*8d67ca89SAndroid Build Coastguard Worker #define UFFDIO_MOVE_MODE_ALLOW_SRC_HOLES ((__u64) 1 << 1) 153*8d67ca89SAndroid Build Coastguard Worker __u64 mode; 154*8d67ca89SAndroid Build Coastguard Worker __s64 move; 155*8d67ca89SAndroid Build Coastguard Worker }; 156*8d67ca89SAndroid Build Coastguard Worker #define UFFD_USER_MODE_ONLY 1 157*8d67ca89SAndroid Build Coastguard Worker #endif 158