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