Blame


1 d4397503 2009-04-30 rsc
2 d4397503 2009-04-30 rsc
3 d4397503 2009-04-30 rsc
4 5551e51d 2006-07-23 devnull /*
5 fd997ef0 2008-08-19 jas This file defines the kernel interface of FUSE
6 fd997ef0 2008-08-19 jas Copyright (C) 2001-2007 Miklos Szeredi <miklos@szeredi.hu>
7 fd997ef0 2008-08-19 jas
8 fd997ef0 2008-08-19 jas
9 5551e51d 2006-07-23 devnull This -- and only this -- header file may also be distributed under
10 5551e51d 2006-07-23 devnull the terms of the BSD Licence as follows:
11 5551e51d 2006-07-23 devnull
12 fd997ef0 2008-08-19 jas Copyright (C) 2001-2007 Miklos Szeredi. All rights reserved.
13 5551e51d 2006-07-23 devnull
14 5551e51d 2006-07-23 devnull Redistribution and use in source and binary forms, with or without
15 5551e51d 2006-07-23 devnull modification, are permitted provided that the following conditions
16 5551e51d 2006-07-23 devnull are met:
17 5551e51d 2006-07-23 devnull 1. Redistributions of source code must retain the above copyright
18 5551e51d 2006-07-23 devnull notice, this list of conditions and the following disclaimer.
19 5551e51d 2006-07-23 devnull 2. Redistributions in binary form must reproduce the above copyright
20 5551e51d 2006-07-23 devnull notice, this list of conditions and the following disclaimer in the
21 5551e51d 2006-07-23 devnull documentation and/or other materials provided with the distribution.
22 5551e51d 2006-07-23 devnull
23 5551e51d 2006-07-23 devnull THIS SOFTWARE IS PROVIDED BY AUTHOR AND CONTRIBUTORS ``AS IS'' AND
24 5551e51d 2006-07-23 devnull ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
25 5551e51d 2006-07-23 devnull IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
26 5551e51d 2006-07-23 devnull ARE DISCLAIMED. IN NO EVENT SHALL AUTHOR OR CONTRIBUTORS BE LIABLE
27 5551e51d 2006-07-23 devnull FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
28 5551e51d 2006-07-23 devnull DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
29 5551e51d 2006-07-23 devnull OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
30 5551e51d 2006-07-23 devnull HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
31 5551e51d 2006-07-23 devnull LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
32 5551e51d 2006-07-23 devnull OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
33 5551e51d 2006-07-23 devnull SUCH DAMAGE.
34 5551e51d 2006-07-23 devnull */
35 5551e51d 2006-07-23 devnull
36 5551e51d 2006-07-23 devnull /* RSC changed these lines */
37 5551e51d 2006-07-23 devnull #include <inttypes.h>
38 5551e51d 2006-07-23 devnull #define __u64 uint64_t
39 5551e51d 2006-07-23 devnull #define __u32 uint32_t
40 5551e51d 2006-07-23 devnull #define __s32 int32_t
41 5551e51d 2006-07-23 devnull
42 5551e51d 2006-07-23 devnull /** Version number of this interface */
43 5551e51d 2006-07-23 devnull #define FUSE_KERNEL_VERSION 7
44 5551e51d 2006-07-23 devnull
45 5551e51d 2006-07-23 devnull /** Minor version number of this interface */
46 fd997ef0 2008-08-19 jas #define FUSE_KERNEL_MINOR_VERSION 8
47 5551e51d 2006-07-23 devnull
48 5551e51d 2006-07-23 devnull /** The node ID of the root inode */
49 5551e51d 2006-07-23 devnull #define FUSE_ROOT_ID 1
50 5551e51d 2006-07-23 devnull
51 5551e51d 2006-07-23 devnull /** The major number of the fuse character device */
52 fd997ef0 2008-08-19 jas #define FUSE_MAJOR MISC_MAJOR
53 5551e51d 2006-07-23 devnull
54 5551e51d 2006-07-23 devnull /** The minor number of the fuse character device */
55 5551e51d 2006-07-23 devnull #define FUSE_MINOR 229
56 5551e51d 2006-07-23 devnull
57 5551e51d 2006-07-23 devnull /* Make sure all structures are padded to 64bit boundary, so 32bit
58 5551e51d 2006-07-23 devnull userspace works under 64bit kernels */
59 5551e51d 2006-07-23 devnull
60 5551e51d 2006-07-23 devnull struct fuse_attr {
61 5551e51d 2006-07-23 devnull __u64 ino;
62 5551e51d 2006-07-23 devnull __u64 size;
63 5551e51d 2006-07-23 devnull __u64 blocks;
64 5551e51d 2006-07-23 devnull __u64 atime;
65 5551e51d 2006-07-23 devnull __u64 mtime;
66 5551e51d 2006-07-23 devnull __u64 ctime;
67 4a34106c 2009-06-16 rsc #if (__FreeBSD__ >= 10 && OSX_VERSION >= 100500)
68 f0cd09f3 2008-12-10 jas __u64 crtime;
69 f0cd09f3 2008-12-10 jas #endif /* __FreeBSD__ >= 10 */
70 5551e51d 2006-07-23 devnull __u32 atimensec;
71 5551e51d 2006-07-23 devnull __u32 mtimensec;
72 5551e51d 2006-07-23 devnull __u32 ctimensec;
73 4a34106c 2009-06-16 rsc #if (__FreeBSD__ >= 10 && OSX_VERSION >= 100500)
74 f0cd09f3 2008-12-10 jas __u32 crtimensec;
75 f0cd09f3 2008-12-10 jas #endif /* __FreeBSD__ >= 10 */
76 5551e51d 2006-07-23 devnull __u32 mode;
77 5551e51d 2006-07-23 devnull __u32 nlink;
78 5551e51d 2006-07-23 devnull __u32 uid;
79 5551e51d 2006-07-23 devnull __u32 gid;
80 5551e51d 2006-07-23 devnull __u32 rdev;
81 fd997ef0 2008-08-19 jas #if (__FreeBSD__ >= 10)
82 fd997ef0 2008-08-19 jas __u32 flags; /* file flags; see chflags(2) */
83 4a34106c 2009-06-16 rsc #if OSX_VERSION < 100500
84 d4397503 2009-04-30 rsc __u32 padding;
85 d4397503 2009-04-30 rsc #endif /* __OSX_VERSION__ < 100500 */
86 fd997ef0 2008-08-19 jas #endif /* __FreeBSD__ >= 10 */
87 5551e51d 2006-07-23 devnull };
88 5551e51d 2006-07-23 devnull
89 5551e51d 2006-07-23 devnull struct fuse_kstatfs {
90 5551e51d 2006-07-23 devnull __u64 blocks;
91 5551e51d 2006-07-23 devnull __u64 bfree;
92 5551e51d 2006-07-23 devnull __u64 bavail;
93 5551e51d 2006-07-23 devnull __u64 files;
94 5551e51d 2006-07-23 devnull __u64 ffree;
95 5551e51d 2006-07-23 devnull __u32 bsize;
96 5551e51d 2006-07-23 devnull __u32 namelen;
97 5551e51d 2006-07-23 devnull __u32 frsize;
98 5551e51d 2006-07-23 devnull __u32 padding;
99 5551e51d 2006-07-23 devnull __u32 spare[6];
100 5551e51d 2006-07-23 devnull };
101 5551e51d 2006-07-23 devnull
102 fd997ef0 2008-08-19 jas struct fuse_file_lock {
103 fd997ef0 2008-08-19 jas __u64 start;
104 fd997ef0 2008-08-19 jas __u64 end;
105 fd997ef0 2008-08-19 jas __u32 type;
106 fd997ef0 2008-08-19 jas __u32 pid; /* tgid */
107 fd997ef0 2008-08-19 jas };
108 fd997ef0 2008-08-19 jas
109 fd997ef0 2008-08-19 jas /**
110 fd997ef0 2008-08-19 jas * Bitmasks for fuse_setattr_in.valid
111 fd997ef0 2008-08-19 jas */
112 5551e51d 2006-07-23 devnull #define FATTR_MODE (1 << 0)
113 5551e51d 2006-07-23 devnull #define FATTR_UID (1 << 1)
114 5551e51d 2006-07-23 devnull #define FATTR_GID (1 << 2)
115 5551e51d 2006-07-23 devnull #define FATTR_SIZE (1 << 3)
116 5551e51d 2006-07-23 devnull #define FATTR_ATIME (1 << 4)
117 5551e51d 2006-07-23 devnull #define FATTR_MTIME (1 << 5)
118 5551e51d 2006-07-23 devnull #define FATTR_FH (1 << 6)
119 fd997ef0 2008-08-19 jas #if (__FreeBSD__ >= 10)
120 fd997ef0 2008-08-19 jas #define FATTR_CRTIME (1 << 28)
121 fd997ef0 2008-08-19 jas #define FATTR_CHGTIME (1 << 29)
122 fd997ef0 2008-08-19 jas #define FATTR_BKUPTIME (1 << 30)
123 fd997ef0 2008-08-19 jas #define FATTR_FLAGS (1 << 31)
124 fd997ef0 2008-08-19 jas #endif /* __FreeBSD__ >= 10 */
125 5551e51d 2006-07-23 devnull
126 5551e51d 2006-07-23 devnull /**
127 5551e51d 2006-07-23 devnull * Flags returned by the OPEN request
128 5551e51d 2006-07-23 devnull *
129 5551e51d 2006-07-23 devnull * FOPEN_DIRECT_IO: bypass page cache for this open file
130 5551e51d 2006-07-23 devnull * FOPEN_KEEP_CACHE: don't invalidate the data cache on open
131 5551e51d 2006-07-23 devnull */
132 5551e51d 2006-07-23 devnull #define FOPEN_DIRECT_IO (1 << 0)
133 5551e51d 2006-07-23 devnull #define FOPEN_KEEP_CACHE (1 << 1)
134 fd997ef0 2008-08-19 jas #if (__FreeBSD__ >= 10)
135 fd997ef0 2008-08-19 jas #define FOPEN_PURGE_ATTR (1 << 30)
136 fd997ef0 2008-08-19 jas #define FOPEN_PURGE_UBC (1 << 31)
137 fd997ef0 2008-08-19 jas #endif
138 5551e51d 2006-07-23 devnull
139 fd997ef0 2008-08-19 jas /**
140 fd997ef0 2008-08-19 jas * INIT request/reply flags
141 fd997ef0 2008-08-19 jas */
142 fd997ef0 2008-08-19 jas #define FUSE_ASYNC_READ (1 << 0)
143 fd997ef0 2008-08-19 jas #define FUSE_POSIX_LOCKS (1 << 1)
144 fd997ef0 2008-08-19 jas #if (__FreeBSD__ >= 10)
145 fd997ef0 2008-08-19 jas #define FUSE_CASE_INSENSITIVE (1 << 29)
146 fd997ef0 2008-08-19 jas #define FUSE_VOL_RENAME (1 << 30)
147 fd997ef0 2008-08-19 jas #define FUSE_XTIMES (1 << 31)
148 fd997ef0 2008-08-19 jas #endif /* __FreeBSD__ >= 10 */
149 fd997ef0 2008-08-19 jas
150 fd997ef0 2008-08-19 jas /**
151 fd997ef0 2008-08-19 jas * Release flags
152 fd997ef0 2008-08-19 jas */
153 fd997ef0 2008-08-19 jas #define FUSE_RELEASE_FLUSH (1 << 0)
154 fd997ef0 2008-08-19 jas
155 5551e51d 2006-07-23 devnull enum fuse_opcode {
156 5551e51d 2006-07-23 devnull FUSE_LOOKUP = 1,
157 5551e51d 2006-07-23 devnull FUSE_FORGET = 2, /* no reply */
158 5551e51d 2006-07-23 devnull FUSE_GETATTR = 3,
159 5551e51d 2006-07-23 devnull FUSE_SETATTR = 4,
160 5551e51d 2006-07-23 devnull FUSE_READLINK = 5,
161 5551e51d 2006-07-23 devnull FUSE_SYMLINK = 6,
162 5551e51d 2006-07-23 devnull FUSE_MKNOD = 8,
163 5551e51d 2006-07-23 devnull FUSE_MKDIR = 9,
164 5551e51d 2006-07-23 devnull FUSE_UNLINK = 10,
165 5551e51d 2006-07-23 devnull FUSE_RMDIR = 11,
166 5551e51d 2006-07-23 devnull FUSE_RENAME = 12,
167 5551e51d 2006-07-23 devnull FUSE_LINK = 13,
168 5551e51d 2006-07-23 devnull FUSE_OPEN = 14,
169 5551e51d 2006-07-23 devnull FUSE_READ = 15,
170 5551e51d 2006-07-23 devnull FUSE_WRITE = 16,
171 5551e51d 2006-07-23 devnull FUSE_STATFS = 17,
172 5551e51d 2006-07-23 devnull FUSE_RELEASE = 18,
173 5551e51d 2006-07-23 devnull FUSE_FSYNC = 20,
174 5551e51d 2006-07-23 devnull FUSE_SETXATTR = 21,
175 5551e51d 2006-07-23 devnull FUSE_GETXATTR = 22,
176 5551e51d 2006-07-23 devnull FUSE_LISTXATTR = 23,
177 5551e51d 2006-07-23 devnull FUSE_REMOVEXATTR = 24,
178 5551e51d 2006-07-23 devnull FUSE_FLUSH = 25,
179 5551e51d 2006-07-23 devnull FUSE_INIT = 26,
180 5551e51d 2006-07-23 devnull FUSE_OPENDIR = 27,
181 5551e51d 2006-07-23 devnull FUSE_READDIR = 28,
182 5551e51d 2006-07-23 devnull FUSE_RELEASEDIR = 29,
183 5551e51d 2006-07-23 devnull FUSE_FSYNCDIR = 30,
184 fd997ef0 2008-08-19 jas FUSE_GETLK = 31,
185 fd997ef0 2008-08-19 jas FUSE_SETLK = 32,
186 fd997ef0 2008-08-19 jas FUSE_SETLKW = 33,
187 5551e51d 2006-07-23 devnull FUSE_ACCESS = 34,
188 fd997ef0 2008-08-19 jas FUSE_CREATE = 35,
189 fd997ef0 2008-08-19 jas FUSE_INTERRUPT = 36,
190 fd997ef0 2008-08-19 jas FUSE_BMAP = 37,
191 fd997ef0 2008-08-19 jas FUSE_DESTROY = 38,
192 fd997ef0 2008-08-19 jas #if (__FreeBSD__ >= 10)
193 fd997ef0 2008-08-19 jas FUSE_SETVOLNAME = 61,
194 fd997ef0 2008-08-19 jas FUSE_GETXTIMES = 62,
195 fd997ef0 2008-08-19 jas FUSE_EXCHANGE = 63,
196 fd997ef0 2008-08-19 jas #endif /* __FreeBSD__ >= 10 */
197 5551e51d 2006-07-23 devnull };
198 5551e51d 2006-07-23 devnull
199 5551e51d 2006-07-23 devnull /* The read buffer is required to be at least 8k, but may be much larger */
200 5551e51d 2006-07-23 devnull #define FUSE_MIN_READ_BUFFER 8192
201 5551e51d 2006-07-23 devnull
202 5551e51d 2006-07-23 devnull struct fuse_entry_out {
203 5551e51d 2006-07-23 devnull __u64 nodeid; /* Inode ID */
204 5551e51d 2006-07-23 devnull __u64 generation; /* Inode generation: nodeid:gen must
205 5551e51d 2006-07-23 devnull be unique for the fs's lifetime */
206 5551e51d 2006-07-23 devnull __u64 entry_valid; /* Cache timeout for the name */
207 5551e51d 2006-07-23 devnull __u64 attr_valid; /* Cache timeout for the attributes */
208 5551e51d 2006-07-23 devnull __u32 entry_valid_nsec;
209 5551e51d 2006-07-23 devnull __u32 attr_valid_nsec;
210 5551e51d 2006-07-23 devnull struct fuse_attr attr;
211 5551e51d 2006-07-23 devnull };
212 5551e51d 2006-07-23 devnull
213 5551e51d 2006-07-23 devnull struct fuse_forget_in {
214 5551e51d 2006-07-23 devnull __u64 nlookup;
215 5551e51d 2006-07-23 devnull };
216 5551e51d 2006-07-23 devnull
217 5551e51d 2006-07-23 devnull struct fuse_attr_out {
218 5551e51d 2006-07-23 devnull __u64 attr_valid; /* Cache timeout for the attributes */
219 5551e51d 2006-07-23 devnull __u32 attr_valid_nsec;
220 5551e51d 2006-07-23 devnull __u32 dummy;
221 5551e51d 2006-07-23 devnull struct fuse_attr attr;
222 5551e51d 2006-07-23 devnull };
223 5551e51d 2006-07-23 devnull
224 fd997ef0 2008-08-19 jas #if (__FreeBSD__ >= 10)
225 fd997ef0 2008-08-19 jas struct fuse_getxtimes_out {
226 fd997ef0 2008-08-19 jas __u64 bkuptime;
227 fd997ef0 2008-08-19 jas __u64 crtime;
228 fd997ef0 2008-08-19 jas __u32 bkuptimensec;
229 fd997ef0 2008-08-19 jas __u32 crtimensec;
230 fd997ef0 2008-08-19 jas };
231 fd997ef0 2008-08-19 jas #endif /* __FreeBSD__ >= 10 */
232 fd997ef0 2008-08-19 jas
233 5551e51d 2006-07-23 devnull struct fuse_mknod_in {
234 5551e51d 2006-07-23 devnull __u32 mode;
235 5551e51d 2006-07-23 devnull __u32 rdev;
236 5551e51d 2006-07-23 devnull };
237 5551e51d 2006-07-23 devnull
238 5551e51d 2006-07-23 devnull struct fuse_mkdir_in {
239 5551e51d 2006-07-23 devnull __u32 mode;
240 5551e51d 2006-07-23 devnull __u32 padding;
241 5551e51d 2006-07-23 devnull };
242 5551e51d 2006-07-23 devnull
243 5551e51d 2006-07-23 devnull struct fuse_rename_in {
244 5551e51d 2006-07-23 devnull __u64 newdir;
245 5551e51d 2006-07-23 devnull };
246 5551e51d 2006-07-23 devnull
247 fd997ef0 2008-08-19 jas #if (__FreeBSD__ >= 10)
248 fd997ef0 2008-08-19 jas struct fuse_exchange_in {
249 fd997ef0 2008-08-19 jas __u64 olddir;
250 fd997ef0 2008-08-19 jas __u64 newdir;
251 fd997ef0 2008-08-19 jas __u64 options;
252 fd997ef0 2008-08-19 jas };
253 fd997ef0 2008-08-19 jas #endif /* __FreeBSD__ >= 10 */
254 fd997ef0 2008-08-19 jas
255 5551e51d 2006-07-23 devnull struct fuse_link_in {
256 5551e51d 2006-07-23 devnull __u64 oldnodeid;
257 5551e51d 2006-07-23 devnull };
258 5551e51d 2006-07-23 devnull
259 5551e51d 2006-07-23 devnull struct fuse_setattr_in {
260 5551e51d 2006-07-23 devnull __u32 valid;
261 5551e51d 2006-07-23 devnull __u32 padding;
262 5551e51d 2006-07-23 devnull __u64 fh;
263 5551e51d 2006-07-23 devnull __u64 size;
264 5551e51d 2006-07-23 devnull __u64 unused1;
265 5551e51d 2006-07-23 devnull __u64 atime;
266 5551e51d 2006-07-23 devnull __u64 mtime;
267 5551e51d 2006-07-23 devnull __u64 unused2;
268 5551e51d 2006-07-23 devnull __u32 atimensec;
269 5551e51d 2006-07-23 devnull __u32 mtimensec;
270 5551e51d 2006-07-23 devnull __u32 unused3;
271 5551e51d 2006-07-23 devnull __u32 mode;
272 5551e51d 2006-07-23 devnull __u32 unused4;
273 5551e51d 2006-07-23 devnull __u32 uid;
274 5551e51d 2006-07-23 devnull __u32 gid;
275 5551e51d 2006-07-23 devnull __u32 unused5;
276 fd997ef0 2008-08-19 jas #if (__FreeBSD__ >= 10)
277 fd997ef0 2008-08-19 jas __u64 bkuptime;
278 fd997ef0 2008-08-19 jas __u64 chgtime;
279 fd997ef0 2008-08-19 jas __u64 crtime;
280 fd997ef0 2008-08-19 jas __u32 bkuptimensec;
281 fd997ef0 2008-08-19 jas __u32 chgtimensec;
282 fd997ef0 2008-08-19 jas __u32 crtimensec;
283 fd997ef0 2008-08-19 jas __u32 flags; /* file flags; see chflags(2) */
284 fd997ef0 2008-08-19 jas #endif /* __FreeBSD__ >= 10 */
285 5551e51d 2006-07-23 devnull };
286 5551e51d 2006-07-23 devnull
287 5551e51d 2006-07-23 devnull struct fuse_open_in {
288 5551e51d 2006-07-23 devnull __u32 flags;
289 5551e51d 2006-07-23 devnull __u32 mode;
290 5551e51d 2006-07-23 devnull };
291 5551e51d 2006-07-23 devnull
292 5551e51d 2006-07-23 devnull struct fuse_open_out {
293 5551e51d 2006-07-23 devnull __u64 fh;
294 5551e51d 2006-07-23 devnull __u32 open_flags;
295 5551e51d 2006-07-23 devnull __u32 padding;
296 5551e51d 2006-07-23 devnull };
297 5551e51d 2006-07-23 devnull
298 5551e51d 2006-07-23 devnull struct fuse_release_in {
299 5551e51d 2006-07-23 devnull __u64 fh;
300 5551e51d 2006-07-23 devnull __u32 flags;
301 fd997ef0 2008-08-19 jas __u32 release_flags;
302 fd997ef0 2008-08-19 jas __u64 lock_owner;
303 5551e51d 2006-07-23 devnull };
304 5551e51d 2006-07-23 devnull
305 5551e51d 2006-07-23 devnull struct fuse_flush_in {
306 5551e51d 2006-07-23 devnull __u64 fh;
307 5551e51d 2006-07-23 devnull __u32 flush_flags;
308 5551e51d 2006-07-23 devnull __u32 padding;
309 fd997ef0 2008-08-19 jas __u64 lock_owner;
310 5551e51d 2006-07-23 devnull };
311 5551e51d 2006-07-23 devnull
312 5551e51d 2006-07-23 devnull struct fuse_read_in {
313 5551e51d 2006-07-23 devnull __u64 fh;
314 5551e51d 2006-07-23 devnull __u64 offset;
315 5551e51d 2006-07-23 devnull __u32 size;
316 5551e51d 2006-07-23 devnull __u32 padding;
317 5551e51d 2006-07-23 devnull };
318 5551e51d 2006-07-23 devnull
319 5551e51d 2006-07-23 devnull struct fuse_write_in {
320 5551e51d 2006-07-23 devnull __u64 fh;
321 5551e51d 2006-07-23 devnull __u64 offset;
322 5551e51d 2006-07-23 devnull __u32 size;
323 5551e51d 2006-07-23 devnull __u32 write_flags;
324 5551e51d 2006-07-23 devnull };
325 5551e51d 2006-07-23 devnull
326 5551e51d 2006-07-23 devnull struct fuse_write_out {
327 5551e51d 2006-07-23 devnull __u32 size;
328 5551e51d 2006-07-23 devnull __u32 padding;
329 5551e51d 2006-07-23 devnull };
330 5551e51d 2006-07-23 devnull
331 5551e51d 2006-07-23 devnull #define FUSE_COMPAT_STATFS_SIZE 48
332 5551e51d 2006-07-23 devnull
333 5551e51d 2006-07-23 devnull struct fuse_statfs_out {
334 5551e51d 2006-07-23 devnull struct fuse_kstatfs st;
335 5551e51d 2006-07-23 devnull };
336 5551e51d 2006-07-23 devnull
337 5551e51d 2006-07-23 devnull struct fuse_fsync_in {
338 5551e51d 2006-07-23 devnull __u64 fh;
339 5551e51d 2006-07-23 devnull __u32 fsync_flags;
340 5551e51d 2006-07-23 devnull __u32 padding;
341 5551e51d 2006-07-23 devnull };
342 5551e51d 2006-07-23 devnull
343 5551e51d 2006-07-23 devnull struct fuse_setxattr_in {
344 5551e51d 2006-07-23 devnull __u32 size;
345 5551e51d 2006-07-23 devnull __u32 flags;
346 fd997ef0 2008-08-19 jas #if (__FreeBSD__ >= 10)
347 fd997ef0 2008-08-19 jas __u32 position;
348 fd997ef0 2008-08-19 jas __u32 padding;
349 fd997ef0 2008-08-19 jas #endif /* __FreeBSD__ >= 10 */
350 5551e51d 2006-07-23 devnull };
351 5551e51d 2006-07-23 devnull
352 5551e51d 2006-07-23 devnull struct fuse_getxattr_in {
353 5551e51d 2006-07-23 devnull __u32 size;
354 5551e51d 2006-07-23 devnull __u32 padding;
355 fd997ef0 2008-08-19 jas #if (__FreeBSD__ >= 10)
356 fd997ef0 2008-08-19 jas __u32 position;
357 fd997ef0 2008-08-19 jas __u32 padding2;
358 fd997ef0 2008-08-19 jas #endif /* __FreeBSD__ >= 10 */
359 5551e51d 2006-07-23 devnull };
360 5551e51d 2006-07-23 devnull
361 5551e51d 2006-07-23 devnull struct fuse_getxattr_out {
362 5551e51d 2006-07-23 devnull __u32 size;
363 5551e51d 2006-07-23 devnull __u32 padding;
364 5551e51d 2006-07-23 devnull };
365 5551e51d 2006-07-23 devnull
366 fd997ef0 2008-08-19 jas struct fuse_lk_in {
367 fd997ef0 2008-08-19 jas __u64 fh;
368 fd997ef0 2008-08-19 jas __u64 owner;
369 fd997ef0 2008-08-19 jas struct fuse_file_lock lk;
370 fd997ef0 2008-08-19 jas };
371 fd997ef0 2008-08-19 jas
372 fd997ef0 2008-08-19 jas struct fuse_lk_out {
373 fd997ef0 2008-08-19 jas struct fuse_file_lock lk;
374 fd997ef0 2008-08-19 jas };
375 fd997ef0 2008-08-19 jas
376 5551e51d 2006-07-23 devnull struct fuse_access_in {
377 5551e51d 2006-07-23 devnull __u32 mask;
378 5551e51d 2006-07-23 devnull __u32 padding;
379 5551e51d 2006-07-23 devnull };
380 5551e51d 2006-07-23 devnull
381 5551e51d 2006-07-23 devnull struct fuse_init_in {
382 5551e51d 2006-07-23 devnull __u32 major;
383 5551e51d 2006-07-23 devnull __u32 minor;
384 fd997ef0 2008-08-19 jas __u32 max_readahead;
385 fd997ef0 2008-08-19 jas __u32 flags;
386 5551e51d 2006-07-23 devnull };
387 5551e51d 2006-07-23 devnull
388 5551e51d 2006-07-23 devnull struct fuse_init_out {
389 5551e51d 2006-07-23 devnull __u32 major;
390 5551e51d 2006-07-23 devnull __u32 minor;
391 fd997ef0 2008-08-19 jas __u32 max_readahead;
392 fd997ef0 2008-08-19 jas __u32 flags;
393 fd997ef0 2008-08-19 jas __u32 unused;
394 5551e51d 2006-07-23 devnull __u32 max_write;
395 5551e51d 2006-07-23 devnull };
396 5551e51d 2006-07-23 devnull
397 fd997ef0 2008-08-19 jas struct fuse_interrupt_in {
398 fd997ef0 2008-08-19 jas __u64 unique;
399 fd997ef0 2008-08-19 jas };
400 fd997ef0 2008-08-19 jas
401 fd997ef0 2008-08-19 jas struct fuse_bmap_in {
402 fd997ef0 2008-08-19 jas __u64 block;
403 fd997ef0 2008-08-19 jas __u32 blocksize;
404 fd997ef0 2008-08-19 jas __u32 padding;
405 fd997ef0 2008-08-19 jas };
406 fd997ef0 2008-08-19 jas
407 fd997ef0 2008-08-19 jas struct fuse_bmap_out {
408 fd997ef0 2008-08-19 jas __u64 block;
409 fd997ef0 2008-08-19 jas };
410 fd997ef0 2008-08-19 jas
411 5551e51d 2006-07-23 devnull struct fuse_in_header {
412 5551e51d 2006-07-23 devnull __u32 len;
413 5551e51d 2006-07-23 devnull __u32 opcode;
414 5551e51d 2006-07-23 devnull __u64 unique;
415 5551e51d 2006-07-23 devnull __u64 nodeid;
416 5551e51d 2006-07-23 devnull __u32 uid;
417 5551e51d 2006-07-23 devnull __u32 gid;
418 5551e51d 2006-07-23 devnull __u32 pid;
419 5551e51d 2006-07-23 devnull __u32 padding;
420 5551e51d 2006-07-23 devnull };
421 5551e51d 2006-07-23 devnull
422 5551e51d 2006-07-23 devnull struct fuse_out_header {
423 5551e51d 2006-07-23 devnull __u32 len;
424 5551e51d 2006-07-23 devnull __s32 error;
425 5551e51d 2006-07-23 devnull __u64 unique;
426 5551e51d 2006-07-23 devnull };
427 5551e51d 2006-07-23 devnull
428 5551e51d 2006-07-23 devnull /* RSC changed name[0] to name[1] for old C compilers */
429 5551e51d 2006-07-23 devnull struct fuse_dirent {
430 5551e51d 2006-07-23 devnull __u64 ino;
431 5551e51d 2006-07-23 devnull __u64 off;
432 5551e51d 2006-07-23 devnull __u32 namelen;
433 5551e51d 2006-07-23 devnull __u32 type;
434 5551e51d 2006-07-23 devnull char name[1];
435 5551e51d 2006-07-23 devnull };
436 5551e51d 2006-07-23 devnull
437 fd997ef0 2008-08-19 jas #define FUSE_NAME_OFFSET offsetof(struct fuse_dirent, name)
438 5551e51d 2006-07-23 devnull #define FUSE_DIRENT_ALIGN(x) (((x) + sizeof(__u64) - 1) & ~(sizeof(__u64) - 1))
439 5551e51d 2006-07-23 devnull #define FUSE_DIRENT_SIZE(d) \
440 5551e51d 2006-07-23 devnull FUSE_DIRENT_ALIGN(FUSE_NAME_OFFSET + (d)->namelen)