blob: 3c3a124fcac69e539ba2ed21f20e179891129c5e [file] [log] [blame]
Ben Cheng655a7c02013-10-16 16:09:24 -07001/****************************************************************************
2 ****************************************************************************
3 ***
4 *** This header was automatically generated from a Linux kernel header
5 *** of the same name, to make information necessary for userspace to
6 *** call into the kernel available to libc. It contains only constants,
7 *** structures, and macros generated from the original header, and thus,
8 *** contains no copyrightable information.
9 ***
10 *** To edit the content of this header, modify the corresponding
11 *** source file (e.g. under external/kernel-headers/original/) then
12 *** run bionic/libc/kernel/tools/update_all.py
13 ***
14 *** Any manual change here will be lost the next time this script will
15 *** be run. You've been warned!
16 ***
17 ****************************************************************************
18 ****************************************************************************/
19#ifndef _LINUX_FUSE_H
20#define _LINUX_FUSE_H
21#include <stdint.h>
22#define FUSE_KERNEL_VERSION 7
Christopher Ferris86a48372019-01-10 14:14:59 -080023#define FUSE_KERNEL_MINOR_VERSION 28
Ben Cheng655a7c02013-10-16 16:09:24 -070024#define FUSE_ROOT_ID 1
25struct fuse_attr {
Tao Baod7db5942015-01-28 10:07:51 -080026 uint64_t ino;
Tao Baod7db5942015-01-28 10:07:51 -080027 uint64_t size;
28 uint64_t blocks;
29 uint64_t atime;
30 uint64_t mtime;
Tao Baod7db5942015-01-28 10:07:51 -080031 uint64_t ctime;
32 uint32_t atimensec;
33 uint32_t mtimensec;
34 uint32_t ctimensec;
Tao Baod7db5942015-01-28 10:07:51 -080035 uint32_t mode;
36 uint32_t nlink;
37 uint32_t uid;
38 uint32_t gid;
Tao Baod7db5942015-01-28 10:07:51 -080039 uint32_t rdev;
40 uint32_t blksize;
41 uint32_t padding;
Ben Cheng655a7c02013-10-16 16:09:24 -070042};
Ben Cheng655a7c02013-10-16 16:09:24 -070043struct fuse_kstatfs {
Tao Baod7db5942015-01-28 10:07:51 -080044 uint64_t blocks;
45 uint64_t bfree;
46 uint64_t bavail;
Tao Baod7db5942015-01-28 10:07:51 -080047 uint64_t files;
48 uint64_t ffree;
49 uint32_t bsize;
50 uint32_t namelen;
Tao Baod7db5942015-01-28 10:07:51 -080051 uint32_t frsize;
52 uint32_t padding;
53 uint32_t spare[6];
Ben Cheng655a7c02013-10-16 16:09:24 -070054};
Ben Cheng655a7c02013-10-16 16:09:24 -070055struct fuse_file_lock {
Tao Baod7db5942015-01-28 10:07:51 -080056 uint64_t start;
57 uint64_t end;
58 uint32_t type;
Tao Baod7db5942015-01-28 10:07:51 -080059 uint32_t pid;
Ben Cheng655a7c02013-10-16 16:09:24 -070060};
61#define FATTR_MODE (1 << 0)
62#define FATTR_UID (1 << 1)
Ben Cheng655a7c02013-10-16 16:09:24 -070063#define FATTR_GID (1 << 2)
64#define FATTR_SIZE (1 << 3)
65#define FATTR_ATIME (1 << 4)
66#define FATTR_MTIME (1 << 5)
Ben Cheng655a7c02013-10-16 16:09:24 -070067#define FATTR_FH (1 << 6)
68#define FATTR_ATIME_NOW (1 << 7)
69#define FATTR_MTIME_NOW (1 << 8)
70#define FATTR_LOCKOWNER (1 << 9)
Christopher Ferrisba8d4f42014-09-03 19:56:49 -070071#define FATTR_CTIME (1 << 10)
Ben Cheng655a7c02013-10-16 16:09:24 -070072#define FOPEN_DIRECT_IO (1 << 0)
73#define FOPEN_KEEP_CACHE (1 << 1)
74#define FOPEN_NONSEEKABLE (1 << 2)
Christopher Ferris86a48372019-01-10 14:14:59 -080075#define FOPEN_CACHE_DIR (1 << 3)
Christopher Ferrisba8d4f42014-09-03 19:56:49 -070076#define FUSE_ASYNC_READ (1 << 0)
Ben Cheng655a7c02013-10-16 16:09:24 -070077#define FUSE_POSIX_LOCKS (1 << 1)
78#define FUSE_FILE_OPS (1 << 2)
79#define FUSE_ATOMIC_O_TRUNC (1 << 3)
Christopher Ferrisba8d4f42014-09-03 19:56:49 -070080#define FUSE_EXPORT_SUPPORT (1 << 4)
Ben Cheng655a7c02013-10-16 16:09:24 -070081#define FUSE_BIG_WRITES (1 << 5)
82#define FUSE_DONT_MASK (1 << 6)
83#define FUSE_SPLICE_WRITE (1 << 7)
Christopher Ferrisba8d4f42014-09-03 19:56:49 -070084#define FUSE_SPLICE_MOVE (1 << 8)
Ben Cheng655a7c02013-10-16 16:09:24 -070085#define FUSE_SPLICE_READ (1 << 9)
86#define FUSE_FLOCK_LOCKS (1 << 10)
87#define FUSE_HAS_IOCTL_DIR (1 << 11)
Christopher Ferrisba8d4f42014-09-03 19:56:49 -070088#define FUSE_AUTO_INVAL_DATA (1 << 12)
Ben Cheng655a7c02013-10-16 16:09:24 -070089#define FUSE_DO_READDIRPLUS (1 << 13)
90#define FUSE_READDIRPLUS_AUTO (1 << 14)
91#define FUSE_ASYNC_DIO (1 << 15)
Christopher Ferrisba8d4f42014-09-03 19:56:49 -070092#define FUSE_WRITEBACK_CACHE (1 << 16)
93#define FUSE_NO_OPEN_SUPPORT (1 << 17)
Christopher Ferris106b3a82016-08-24 12:15:38 -070094#define FUSE_PARALLEL_DIROPS (1 << 18)
Christopher Ferris6a9755d2017-01-13 14:09:31 -080095#define FUSE_HANDLE_KILLPRIV (1 << 19)
Christopher Ferris6a9755d2017-01-13 14:09:31 -080096#define FUSE_POSIX_ACL (1 << 20)
Christopher Ferris9ce28842018-10-25 12:11:39 -070097#define FUSE_ABORT_ERROR (1 << 21)
Christopher Ferris86a48372019-01-10 14:14:59 -080098#define FUSE_MAX_PAGES (1 << 22)
99#define FUSE_CACHE_SYMLINKS (1 << 23)
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800100#define CUSE_UNRESTRICTED_IOCTL (1 << 0)
Christopher Ferris106b3a82016-08-24 12:15:38 -0700101#define FUSE_RELEASE_FLUSH (1 << 0)
Ben Cheng655a7c02013-10-16 16:09:24 -0700102#define FUSE_RELEASE_FLOCK_UNLOCK (1 << 1)
103#define FUSE_GETATTR_FH (1 << 0)
104#define FUSE_LK_FLOCK (1 << 0)
Christopher Ferris106b3a82016-08-24 12:15:38 -0700105#define FUSE_WRITE_CACHE (1 << 0)
Ben Cheng655a7c02013-10-16 16:09:24 -0700106#define FUSE_WRITE_LOCKOWNER (1 << 1)
107#define FUSE_READ_LOCKOWNER (1 << 1)
108#define FUSE_IOCTL_COMPAT (1 << 0)
Christopher Ferris106b3a82016-08-24 12:15:38 -0700109#define FUSE_IOCTL_UNRESTRICTED (1 << 1)
Ben Cheng655a7c02013-10-16 16:09:24 -0700110#define FUSE_IOCTL_RETRY (1 << 2)
111#define FUSE_IOCTL_32BIT (1 << 3)
112#define FUSE_IOCTL_DIR (1 << 4)
Christopher Ferris106b3a82016-08-24 12:15:38 -0700113#define FUSE_IOCTL_MAX_IOV 256
Ben Cheng655a7c02013-10-16 16:09:24 -0700114#define FUSE_POLL_SCHEDULE_NOTIFY (1 << 0)
115enum fuse_opcode {
Tao Baod7db5942015-01-28 10:07:51 -0800116 FUSE_LOOKUP = 1,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700117 FUSE_FORGET = 2,
Tao Baod7db5942015-01-28 10:07:51 -0800118 FUSE_GETATTR = 3,
119 FUSE_SETATTR = 4,
120 FUSE_READLINK = 5,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700121 FUSE_SYMLINK = 6,
Tao Baod7db5942015-01-28 10:07:51 -0800122 FUSE_MKNOD = 8,
123 FUSE_MKDIR = 9,
124 FUSE_UNLINK = 10,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700125 FUSE_RMDIR = 11,
Tao Baod7db5942015-01-28 10:07:51 -0800126 FUSE_RENAME = 12,
127 FUSE_LINK = 13,
128 FUSE_OPEN = 14,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700129 FUSE_READ = 15,
Tao Baod7db5942015-01-28 10:07:51 -0800130 FUSE_WRITE = 16,
131 FUSE_STATFS = 17,
132 FUSE_RELEASE = 18,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700133 FUSE_FSYNC = 20,
Tao Baod7db5942015-01-28 10:07:51 -0800134 FUSE_SETXATTR = 21,
135 FUSE_GETXATTR = 22,
136 FUSE_LISTXATTR = 23,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700137 FUSE_REMOVEXATTR = 24,
Tao Baod7db5942015-01-28 10:07:51 -0800138 FUSE_FLUSH = 25,
139 FUSE_INIT = 26,
140 FUSE_OPENDIR = 27,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700141 FUSE_READDIR = 28,
Tao Baod7db5942015-01-28 10:07:51 -0800142 FUSE_RELEASEDIR = 29,
143 FUSE_FSYNCDIR = 30,
144 FUSE_GETLK = 31,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700145 FUSE_SETLK = 32,
Tao Baod7db5942015-01-28 10:07:51 -0800146 FUSE_SETLKW = 33,
147 FUSE_ACCESS = 34,
148 FUSE_CREATE = 35,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700149 FUSE_INTERRUPT = 36,
Tao Baod7db5942015-01-28 10:07:51 -0800150 FUSE_BMAP = 37,
151 FUSE_DESTROY = 38,
152 FUSE_IOCTL = 39,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700153 FUSE_POLL = 40,
Tao Baod7db5942015-01-28 10:07:51 -0800154 FUSE_NOTIFY_REPLY = 41,
155 FUSE_BATCH_FORGET = 42,
156 FUSE_FALLOCATE = 43,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700157 FUSE_READDIRPLUS = 44,
Tao Baod7db5942015-01-28 10:07:51 -0800158 FUSE_RENAME2 = 45,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700159 FUSE_LSEEK = 46,
Christopher Ferris86a48372019-01-10 14:14:59 -0800160 FUSE_COPY_FILE_RANGE = 47,
Tao Baod7db5942015-01-28 10:07:51 -0800161 CUSE_INIT = 4096,
Ben Cheng655a7c02013-10-16 16:09:24 -0700162};
163enum fuse_notify_code {
Tao Baod7db5942015-01-28 10:07:51 -0800164 FUSE_NOTIFY_POLL = 1,
165 FUSE_NOTIFY_INVAL_INODE = 2,
166 FUSE_NOTIFY_INVAL_ENTRY = 3,
167 FUSE_NOTIFY_STORE = 4,
Tao Baod7db5942015-01-28 10:07:51 -0800168 FUSE_NOTIFY_RETRIEVE = 5,
169 FUSE_NOTIFY_DELETE = 6,
170 FUSE_NOTIFY_CODE_MAX,
Ben Cheng655a7c02013-10-16 16:09:24 -0700171};
Ben Cheng655a7c02013-10-16 16:09:24 -0700172#define FUSE_MIN_READ_BUFFER 8192
173#define FUSE_COMPAT_ENTRY_OUT_SIZE 120
174struct fuse_entry_out {
Tao Baod7db5942015-01-28 10:07:51 -0800175 uint64_t nodeid;
Tao Baod7db5942015-01-28 10:07:51 -0800176 uint64_t generation;
177 uint64_t entry_valid;
178 uint64_t attr_valid;
179 uint32_t entry_valid_nsec;
Tao Baod7db5942015-01-28 10:07:51 -0800180 uint32_t attr_valid_nsec;
181 struct fuse_attr attr;
Ben Cheng655a7c02013-10-16 16:09:24 -0700182};
183struct fuse_forget_in {
Tao Baod7db5942015-01-28 10:07:51 -0800184 uint64_t nlookup;
Ben Cheng655a7c02013-10-16 16:09:24 -0700185};
186struct fuse_forget_one {
Tao Baod7db5942015-01-28 10:07:51 -0800187 uint64_t nodeid;
Tao Baod7db5942015-01-28 10:07:51 -0800188 uint64_t nlookup;
Ben Cheng655a7c02013-10-16 16:09:24 -0700189};
190struct fuse_batch_forget_in {
Tao Baod7db5942015-01-28 10:07:51 -0800191 uint32_t count;
Tao Baod7db5942015-01-28 10:07:51 -0800192 uint32_t dummy;
Ben Cheng655a7c02013-10-16 16:09:24 -0700193};
194struct fuse_getattr_in {
Tao Baod7db5942015-01-28 10:07:51 -0800195 uint32_t getattr_flags;
Tao Baod7db5942015-01-28 10:07:51 -0800196 uint32_t dummy;
197 uint64_t fh;
Ben Cheng655a7c02013-10-16 16:09:24 -0700198};
199#define FUSE_COMPAT_ATTR_OUT_SIZE 96
Ben Cheng655a7c02013-10-16 16:09:24 -0700200struct fuse_attr_out {
Tao Baod7db5942015-01-28 10:07:51 -0800201 uint64_t attr_valid;
202 uint32_t attr_valid_nsec;
203 uint32_t dummy;
Tao Baod7db5942015-01-28 10:07:51 -0800204 struct fuse_attr attr;
Ben Cheng655a7c02013-10-16 16:09:24 -0700205};
206#define FUSE_COMPAT_MKNOD_IN_SIZE 8
207struct fuse_mknod_in {
Tao Baod7db5942015-01-28 10:07:51 -0800208 uint32_t mode;
209 uint32_t rdev;
210 uint32_t umask;
211 uint32_t padding;
Ben Cheng655a7c02013-10-16 16:09:24 -0700212};
213struct fuse_mkdir_in {
Tao Baod7db5942015-01-28 10:07:51 -0800214 uint32_t mode;
215 uint32_t umask;
Ben Cheng655a7c02013-10-16 16:09:24 -0700216};
217struct fuse_rename_in {
Tao Baod7db5942015-01-28 10:07:51 -0800218 uint64_t newdir;
Ben Cheng655a7c02013-10-16 16:09:24 -0700219};
Christopher Ferrisba8d4f42014-09-03 19:56:49 -0700220struct fuse_rename2_in {
Tao Baod7db5942015-01-28 10:07:51 -0800221 uint64_t newdir;
222 uint32_t flags;
223 uint32_t padding;
Christopher Ferrisba8d4f42014-09-03 19:56:49 -0700224};
Ben Cheng655a7c02013-10-16 16:09:24 -0700225struct fuse_link_in {
Tao Baod7db5942015-01-28 10:07:51 -0800226 uint64_t oldnodeid;
Ben Cheng655a7c02013-10-16 16:09:24 -0700227};
Christopher Ferrisba8d4f42014-09-03 19:56:49 -0700228struct fuse_setattr_in {
Tao Baod7db5942015-01-28 10:07:51 -0800229 uint32_t valid;
230 uint32_t padding;
231 uint64_t fh;
Tao Baod7db5942015-01-28 10:07:51 -0800232 uint64_t size;
233 uint64_t lock_owner;
234 uint64_t atime;
235 uint64_t mtime;
Tao Baod7db5942015-01-28 10:07:51 -0800236 uint64_t ctime;
237 uint32_t atimensec;
238 uint32_t mtimensec;
239 uint32_t ctimensec;
Tao Baod7db5942015-01-28 10:07:51 -0800240 uint32_t mode;
241 uint32_t unused4;
242 uint32_t uid;
243 uint32_t gid;
Tao Baod7db5942015-01-28 10:07:51 -0800244 uint32_t unused5;
Ben Cheng655a7c02013-10-16 16:09:24 -0700245};
246struct fuse_open_in {
Tao Baod7db5942015-01-28 10:07:51 -0800247 uint32_t flags;
Tao Baod7db5942015-01-28 10:07:51 -0800248 uint32_t unused;
Ben Cheng655a7c02013-10-16 16:09:24 -0700249};
250struct fuse_create_in {
Tao Baod7db5942015-01-28 10:07:51 -0800251 uint32_t flags;
Tao Baod7db5942015-01-28 10:07:51 -0800252 uint32_t mode;
253 uint32_t umask;
254 uint32_t padding;
Ben Cheng655a7c02013-10-16 16:09:24 -0700255};
Christopher Ferrisba8d4f42014-09-03 19:56:49 -0700256struct fuse_open_out {
Tao Baod7db5942015-01-28 10:07:51 -0800257 uint64_t fh;
258 uint32_t open_flags;
259 uint32_t padding;
Christopher Ferrisba8d4f42014-09-03 19:56:49 -0700260};
Ben Cheng655a7c02013-10-16 16:09:24 -0700261struct fuse_release_in {
Tao Baod7db5942015-01-28 10:07:51 -0800262 uint64_t fh;
263 uint32_t flags;
Tao Baod7db5942015-01-28 10:07:51 -0800264 uint32_t release_flags;
265 uint64_t lock_owner;
Ben Cheng655a7c02013-10-16 16:09:24 -0700266};
267struct fuse_flush_in {
Tao Baod7db5942015-01-28 10:07:51 -0800268 uint64_t fh;
269 uint32_t unused;
270 uint32_t padding;
271 uint64_t lock_owner;
Christopher Ferrisba8d4f42014-09-03 19:56:49 -0700272};
Ben Cheng655a7c02013-10-16 16:09:24 -0700273struct fuse_read_in {
Tao Baod7db5942015-01-28 10:07:51 -0800274 uint64_t fh;
275 uint64_t offset;
Tao Baod7db5942015-01-28 10:07:51 -0800276 uint32_t size;
277 uint32_t read_flags;
278 uint64_t lock_owner;
279 uint32_t flags;
Tao Baod7db5942015-01-28 10:07:51 -0800280 uint32_t padding;
Ben Cheng655a7c02013-10-16 16:09:24 -0700281};
282#define FUSE_COMPAT_WRITE_IN_SIZE 24
283struct fuse_write_in {
Tao Baod7db5942015-01-28 10:07:51 -0800284 uint64_t fh;
285 uint64_t offset;
286 uint32_t size;
287 uint32_t write_flags;
Tao Baod7db5942015-01-28 10:07:51 -0800288 uint64_t lock_owner;
289 uint32_t flags;
290 uint32_t padding;
Ben Cheng655a7c02013-10-16 16:09:24 -0700291};
Christopher Ferrisba8d4f42014-09-03 19:56:49 -0700292struct fuse_write_out {
Tao Baod7db5942015-01-28 10:07:51 -0800293 uint32_t size;
294 uint32_t padding;
Ben Cheng655a7c02013-10-16 16:09:24 -0700295};
Christopher Ferrisba8d4f42014-09-03 19:56:49 -0700296#define FUSE_COMPAT_STATFS_SIZE 48
Ben Cheng655a7c02013-10-16 16:09:24 -0700297struct fuse_statfs_out {
Tao Baod7db5942015-01-28 10:07:51 -0800298 struct fuse_kstatfs st;
Ben Cheng655a7c02013-10-16 16:09:24 -0700299};
Christopher Ferrisba8d4f42014-09-03 19:56:49 -0700300struct fuse_fsync_in {
Tao Baod7db5942015-01-28 10:07:51 -0800301 uint64_t fh;
302 uint32_t fsync_flags;
303 uint32_t padding;
Christopher Ferrisba8d4f42014-09-03 19:56:49 -0700304};
Ben Cheng655a7c02013-10-16 16:09:24 -0700305struct fuse_setxattr_in {
Tao Baod7db5942015-01-28 10:07:51 -0800306 uint32_t size;
307 uint32_t flags;
Christopher Ferrisba8d4f42014-09-03 19:56:49 -0700308};
Ben Cheng655a7c02013-10-16 16:09:24 -0700309struct fuse_getxattr_in {
Tao Baod7db5942015-01-28 10:07:51 -0800310 uint32_t size;
311 uint32_t padding;
Christopher Ferrisba8d4f42014-09-03 19:56:49 -0700312};
Ben Cheng655a7c02013-10-16 16:09:24 -0700313struct fuse_getxattr_out {
Tao Baod7db5942015-01-28 10:07:51 -0800314 uint32_t size;
315 uint32_t padding;
Christopher Ferrisba8d4f42014-09-03 19:56:49 -0700316};
Ben Cheng655a7c02013-10-16 16:09:24 -0700317struct fuse_lk_in {
Tao Baod7db5942015-01-28 10:07:51 -0800318 uint64_t fh;
319 uint64_t owner;
Tao Baod7db5942015-01-28 10:07:51 -0800320 struct fuse_file_lock lk;
321 uint32_t lk_flags;
322 uint32_t padding;
Ben Cheng655a7c02013-10-16 16:09:24 -0700323};
Christopher Ferrisba8d4f42014-09-03 19:56:49 -0700324struct fuse_lk_out {
Tao Baod7db5942015-01-28 10:07:51 -0800325 struct fuse_file_lock lk;
Ben Cheng655a7c02013-10-16 16:09:24 -0700326};
327struct fuse_access_in {
Tao Baod7db5942015-01-28 10:07:51 -0800328 uint32_t mask;
329 uint32_t padding;
Ben Cheng655a7c02013-10-16 16:09:24 -0700330};
331struct fuse_init_in {
Tao Baod7db5942015-01-28 10:07:51 -0800332 uint32_t major;
333 uint32_t minor;
334 uint32_t max_readahead;
335 uint32_t flags;
Ben Cheng655a7c02013-10-16 16:09:24 -0700336};
Christopher Ferrisba8d4f42014-09-03 19:56:49 -0700337#define FUSE_COMPAT_INIT_OUT_SIZE 8
338#define FUSE_COMPAT_22_INIT_OUT_SIZE 24
Ben Cheng655a7c02013-10-16 16:09:24 -0700339struct fuse_init_out {
Tao Baod7db5942015-01-28 10:07:51 -0800340 uint32_t major;
341 uint32_t minor;
342 uint32_t max_readahead;
343 uint32_t flags;
Tao Baod7db5942015-01-28 10:07:51 -0800344 uint16_t max_background;
345 uint16_t congestion_threshold;
346 uint32_t max_write;
347 uint32_t time_gran;
Christopher Ferris86a48372019-01-10 14:14:59 -0800348 uint16_t max_pages;
349 uint16_t padding;
350 uint32_t unused[8];
Ben Cheng655a7c02013-10-16 16:09:24 -0700351};
352#define CUSE_INIT_INFO_MAX 4096
353struct cuse_init_in {
Tao Baod7db5942015-01-28 10:07:51 -0800354 uint32_t major;
355 uint32_t minor;
356 uint32_t unused;
357 uint32_t flags;
Christopher Ferrisba8d4f42014-09-03 19:56:49 -0700358};
Ben Cheng655a7c02013-10-16 16:09:24 -0700359struct cuse_init_out {
Tao Baod7db5942015-01-28 10:07:51 -0800360 uint32_t major;
361 uint32_t minor;
Tao Baod7db5942015-01-28 10:07:51 -0800362 uint32_t unused;
363 uint32_t flags;
364 uint32_t max_read;
365 uint32_t max_write;
Tao Baod7db5942015-01-28 10:07:51 -0800366 uint32_t dev_major;
367 uint32_t dev_minor;
368 uint32_t spare[10];
Ben Cheng655a7c02013-10-16 16:09:24 -0700369};
Christopher Ferrisba8d4f42014-09-03 19:56:49 -0700370struct fuse_interrupt_in {
Tao Baod7db5942015-01-28 10:07:51 -0800371 uint64_t unique;
Ben Cheng655a7c02013-10-16 16:09:24 -0700372};
373struct fuse_bmap_in {
Tao Baod7db5942015-01-28 10:07:51 -0800374 uint64_t block;
375 uint32_t blocksize;
376 uint32_t padding;
Ben Cheng655a7c02013-10-16 16:09:24 -0700377};
Christopher Ferrisba8d4f42014-09-03 19:56:49 -0700378struct fuse_bmap_out {
Tao Baod7db5942015-01-28 10:07:51 -0800379 uint64_t block;
Ben Cheng655a7c02013-10-16 16:09:24 -0700380};
381struct fuse_ioctl_in {
Tao Baod7db5942015-01-28 10:07:51 -0800382 uint64_t fh;
383 uint32_t flags;
384 uint32_t cmd;
385 uint64_t arg;
Tao Baod7db5942015-01-28 10:07:51 -0800386 uint32_t in_size;
387 uint32_t out_size;
Ben Cheng655a7c02013-10-16 16:09:24 -0700388};
389struct fuse_ioctl_iovec {
Tao Baod7db5942015-01-28 10:07:51 -0800390 uint64_t base;
391 uint64_t len;
Ben Cheng655a7c02013-10-16 16:09:24 -0700392};
393struct fuse_ioctl_out {
Tao Baod7db5942015-01-28 10:07:51 -0800394 int32_t result;
395 uint32_t flags;
396 uint32_t in_iovs;
397 uint32_t out_iovs;
Christopher Ferrisba8d4f42014-09-03 19:56:49 -0700398};
Ben Cheng655a7c02013-10-16 16:09:24 -0700399struct fuse_poll_in {
Tao Baod7db5942015-01-28 10:07:51 -0800400 uint64_t fh;
401 uint64_t kh;
Tao Baod7db5942015-01-28 10:07:51 -0800402 uint32_t flags;
403 uint32_t events;
Ben Cheng655a7c02013-10-16 16:09:24 -0700404};
405struct fuse_poll_out {
Tao Baod7db5942015-01-28 10:07:51 -0800406 uint32_t revents;
407 uint32_t padding;
Ben Cheng655a7c02013-10-16 16:09:24 -0700408};
409struct fuse_notify_poll_wakeup_out {
Tao Baod7db5942015-01-28 10:07:51 -0800410 uint64_t kh;
Ben Cheng655a7c02013-10-16 16:09:24 -0700411};
412struct fuse_fallocate_in {
Tao Baod7db5942015-01-28 10:07:51 -0800413 uint64_t fh;
Tao Baod7db5942015-01-28 10:07:51 -0800414 uint64_t offset;
415 uint64_t length;
416 uint32_t mode;
417 uint32_t padding;
Christopher Ferrisba8d4f42014-09-03 19:56:49 -0700418};
Ben Cheng655a7c02013-10-16 16:09:24 -0700419struct fuse_in_header {
Tao Baod7db5942015-01-28 10:07:51 -0800420 uint32_t len;
421 uint32_t opcode;
Tao Baod7db5942015-01-28 10:07:51 -0800422 uint64_t unique;
423 uint64_t nodeid;
424 uint32_t uid;
425 uint32_t gid;
Tao Baod7db5942015-01-28 10:07:51 -0800426 uint32_t pid;
427 uint32_t padding;
Ben Cheng655a7c02013-10-16 16:09:24 -0700428};
429struct fuse_out_header {
Tao Baod7db5942015-01-28 10:07:51 -0800430 uint32_t len;
431 int32_t error;
432 uint64_t unique;
Ben Cheng655a7c02013-10-16 16:09:24 -0700433};
Christopher Ferrisba8d4f42014-09-03 19:56:49 -0700434struct fuse_dirent {
Tao Baod7db5942015-01-28 10:07:51 -0800435 uint64_t ino;
436 uint64_t off;
437 uint32_t namelen;
Tao Baod7db5942015-01-28 10:07:51 -0800438 uint32_t type;
439 char name[];
Ben Cheng655a7c02013-10-16 16:09:24 -0700440};
441#define FUSE_NAME_OFFSET offsetof(struct fuse_dirent, name)
Tao Baod7db5942015-01-28 10:07:51 -0800442#define FUSE_DIRENT_ALIGN(x) (((x) + sizeof(uint64_t) - 1) & ~(sizeof(uint64_t) - 1))
443#define FUSE_DIRENT_SIZE(d) FUSE_DIRENT_ALIGN(FUSE_NAME_OFFSET + (d)->namelen)
Ben Cheng655a7c02013-10-16 16:09:24 -0700444struct fuse_direntplus {
Tao Baod7db5942015-01-28 10:07:51 -0800445 struct fuse_entry_out entry_out;
Tao Baod7db5942015-01-28 10:07:51 -0800446 struct fuse_dirent dirent;
Ben Cheng655a7c02013-10-16 16:09:24 -0700447};
Tao Baod7db5942015-01-28 10:07:51 -0800448#define FUSE_NAME_OFFSET_DIRENTPLUS offsetof(struct fuse_direntplus, dirent.name)
449#define FUSE_DIRENTPLUS_SIZE(d) FUSE_DIRENT_ALIGN(FUSE_NAME_OFFSET_DIRENTPLUS + (d)->dirent.namelen)
Christopher Ferrisba8d4f42014-09-03 19:56:49 -0700450struct fuse_notify_inval_inode_out {
Tao Baod7db5942015-01-28 10:07:51 -0800451 uint64_t ino;
452 int64_t off;
453 int64_t len;
Christopher Ferrisba8d4f42014-09-03 19:56:49 -0700454};
Ben Cheng655a7c02013-10-16 16:09:24 -0700455struct fuse_notify_inval_entry_out {
Tao Baod7db5942015-01-28 10:07:51 -0800456 uint64_t parent;
457 uint32_t namelen;
Tao Baod7db5942015-01-28 10:07:51 -0800458 uint32_t padding;
Ben Cheng655a7c02013-10-16 16:09:24 -0700459};
460struct fuse_notify_delete_out {
Tao Baod7db5942015-01-28 10:07:51 -0800461 uint64_t parent;
Tao Baod7db5942015-01-28 10:07:51 -0800462 uint64_t child;
463 uint32_t namelen;
464 uint32_t padding;
Ben Cheng655a7c02013-10-16 16:09:24 -0700465};
Christopher Ferrisba8d4f42014-09-03 19:56:49 -0700466struct fuse_notify_store_out {
Tao Baod7db5942015-01-28 10:07:51 -0800467 uint64_t nodeid;
468 uint64_t offset;
469 uint32_t size;
Tao Baod7db5942015-01-28 10:07:51 -0800470 uint32_t padding;
Ben Cheng655a7c02013-10-16 16:09:24 -0700471};
472struct fuse_notify_retrieve_out {
Tao Baod7db5942015-01-28 10:07:51 -0800473 uint64_t notify_unique;
Tao Baod7db5942015-01-28 10:07:51 -0800474 uint64_t nodeid;
475 uint64_t offset;
476 uint32_t size;
477 uint32_t padding;
Christopher Ferrisba8d4f42014-09-03 19:56:49 -0700478};
Ben Cheng655a7c02013-10-16 16:09:24 -0700479struct fuse_notify_retrieve_in {
Tao Baod7db5942015-01-28 10:07:51 -0800480 uint64_t dummy1;
481 uint64_t offset;
Tao Baod7db5942015-01-28 10:07:51 -0800482 uint32_t size;
483 uint32_t dummy2;
484 uint64_t dummy3;
485 uint64_t dummy4;
Christopher Ferrisba8d4f42014-09-03 19:56:49 -0700486};
Christopher Ferris05d08e92016-02-04 13:16:38 -0800487#define FUSE_DEV_IOC_CLONE _IOR(229, 0, uint32_t)
Christopher Ferris106b3a82016-08-24 12:15:38 -0700488struct fuse_lseek_in {
489 uint64_t fh;
490 uint64_t offset;
491 uint32_t whence;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700492 uint32_t padding;
493};
494struct fuse_lseek_out {
495 uint64_t offset;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700496};
Christopher Ferris86a48372019-01-10 14:14:59 -0800497struct fuse_copy_file_range_in {
498 uint64_t fh_in;
499 uint64_t off_in;
500 uint64_t nodeid_out;
501 uint64_t fh_out;
502 uint64_t off_out;
503 uint64_t len;
504 uint64_t flags;
505};
Ben Cheng655a7c02013-10-16 16:09:24 -0700506#endif