xref: /aosp_15_r20/prebuilts/build-tools/sysroots/arm-unknown-linux-musleabihf/include/linux/userfaultfd.h (revision cda5da8d549138a6648c5ee6d7a49cf8f4a657be)
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