1extern crate libc;
7
8#[repr(C)]
9#[derive(Copy, Clone, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd)]
10#[allow(non_camel_case_types)]
11pub struct __BindgenBitfieldUnit<Storage, Align>
12where
13 Storage: AsRef<[u8]> + AsMut<[u8]>,
14{
15 storage: Storage,
16 align: [Align; 0],
17}
18
19#[doc = " Argument list"]
20#[repr(C)]
21#[derive(Debug, Copy, Clone)]
22#[allow(non_camel_case_types)]
23pub struct fuse_args {
24 #[doc = " Argument count"]
25 pub argc: ::std::os::raw::c_int,
26 #[doc = " Argument vector. NULL terminated"]
27 pub argv: *mut *mut ::std::os::raw::c_char,
28 #[doc = " Is \'argv\' allocated?"]
29 pub allocated: ::std::os::raw::c_int,
30}
31
32#[doc = " Option description"]
33#[doc = ""]
34#[doc = " This structure describes a single option, and and action associated"]
35#[doc = " with it, in case it matches."]
36#[doc = ""]
37#[doc = " More than one such match may occur, in which case the action for"]
38#[doc = " each match is executed."]
39#[doc = ""]
40#[doc = " There are three possible actions in case of a match:"]
41#[doc = ""]
42#[doc = " i) An integer (int or unsigned) variable determined by \'offset\' is"]
43#[doc = " set to \'value\'"]
44#[doc = ""]
45#[doc = " ii) The processing function is called, with \'value\' as the key"]
46#[doc = ""]
47#[doc = " iii) An integer (any) or string (char *) variable determined by"]
48#[doc = " \'offset\' is set to the value of an option parameter"]
49#[doc = ""]
50#[doc = " \'offset\' should normally be either set to"]
51#[doc = ""]
52#[doc = " - \'offsetof(struct foo, member)\' actions i) and iii)"]
53#[doc = ""]
54#[doc = " - -1\t\t\t action ii)"]
55#[doc = ""]
56#[doc = " The \'offsetof()\' macro is defined in the <stddef.h> header."]
57#[doc = ""]
58#[doc = " The template determines which options match, and also have an"]
59#[doc = " effect on the action. Normally the action is either i) or ii), but"]
60#[doc = " if a format is present in the template, then action iii) is"]
61#[doc = " performed."]
62#[doc = ""]
63#[doc = " The types of templates are:"]
64#[doc = ""]
65#[doc = " 1) \"-x\", \"-foo\", \"--foo\", \"--foo-bar\", etc.\tThese match only"]
66#[doc = " themselves. Invalid values are \"--\" and anything beginning"]
67#[doc = " with \"-o\""]
68#[doc = ""]
69#[doc = " 2) \"foo\", \"foo-bar\", etc. These match \"-ofoo\", \"-ofoo-bar\" or"]
70#[doc = " the relevant option in a comma separated option list"]
71#[doc = ""]
72#[doc = " 3) \"bar=\", \"--foo=\", etc. These are variations of 1) and 2)"]
73#[doc = " which have a parameter"]
74#[doc = ""]
75#[doc = " 4) \"bar=%s\", \"--foo=%lu\", etc. Same matching as above but perform"]
76#[doc = " action iii)."]
77#[doc = ""]
78#[doc = " 5) \"-x \", etc. Matches either \"-xparam\" or \"-x param\" as"]
79#[doc = " two separate arguments"]
80#[doc = ""]
81#[doc = " 6) \"-x %s\", etc. Combination of 4) and 5)"]
82#[doc = ""]
83#[doc = " If the format is \"%s\", memory is allocated for the string unlike"]
84#[doc = " with scanf()."]
85#[repr(C)]
86#[derive(Debug, Copy, Clone)]
87#[allow(non_camel_case_types)]
88pub struct fuse_opt {
89 #[doc = " Matching template and optional parameter formatting"]
90 pub templ: *const ::std::os::raw::c_char,
91 #[doc = " Offset of variable within \'data\' parameter of fuse_opt_parse()"]
92 #[doc = " or -1"]
93 pub offset: ::std::os::raw::c_ulong,
94 #[doc = " Value to set the variable to, or to be passed as \'key\' to the"]
95 #[doc = " processing function.\t Ignored if template has a format"]
96 pub value: ::std::os::raw::c_int,
97}
98
99#[doc = " Connection information, passed to the ->init() method"]
100#[doc = ""]
101#[doc = " Some of the elements are read-write, these can be changed to"]
102#[doc = " indicate the value requested by the filesystem. The requested"]
103#[doc = " value must usually be smaller than the indicated value."]
104#[repr(C)]
105#[derive(Debug, Copy, Clone)]
106#[allow(non_camel_case_types)]
107pub struct fuse_conn_info {
108 #[doc = " Major version of the protocol (read-only)"]
109 pub proto_major: ::std::os::raw::c_uint,
110 #[doc = " Minor version of the protocol (read-only)"]
111 pub proto_minor: ::std::os::raw::c_uint,
112 #[doc = " Is asynchronous read supported (read-write)"]
113 pub async_read: ::std::os::raw::c_uint,
114 #[doc = " Maximum size of the write buffer"]
115 pub max_write: ::std::os::raw::c_uint,
116 #[doc = " Maximum readahead"]
117 pub max_readahead: ::std::os::raw::c_uint,
118 pub reserved: [::std::os::raw::c_uint; 26usize],
120}
121
122#[doc = " Information about open files"]
123#[doc = ""]
124#[doc = " Changed in version 2.5"]
125#[repr(C)]
126#[derive(Debug, Copy, Clone)]
127#[allow(non_camel_case_types)]
128pub struct fuse_file_info {
129 #[doc = " Open flags.\t Available in open() and release()"]
130 pub flags: ::std::os::raw::c_int,
131 #[doc = " Old file handle, don\'t use"]
132 pub fh_old: ::std::os::raw::c_ulong,
133 #[doc = " In case of a write operation indicates if this was caused by a"]
134 #[doc = "writepage"]
135 pub writepage: ::std::os::raw::c_int,
136 pub _bitfield_1: __BindgenBitfieldUnit<[u8; 4usize], u32>,
137 #[doc = " File handle. May be filled in by filesystem in open()."]
138 #[doc = "Available in all other file operations"]
139 pub fh: u64,
140 #[doc = " Lock owner id. Available in locking operations and flush"]
141 pub lock_owner: u64,
142}
143
144#[doc = " Function to add an entry in a readdir() operation"]
145#[doc = ""]
146#[doc = " @param buf the buffer passed to the readdir() operation"]
147#[doc = " @param name the file name of the directory entry"]
148#[doc = " @param stat file attributes, can be NULL"]
149#[doc = " @param off offset of the next entry or zero"]
150#[doc = " @return 1 if buffer is full, zero otherwise"]
151#[allow(non_camel_case_types)]
152pub type fuse_fill_dir_t = ::std::option::Option<
153 unsafe extern "C" fn(
154 buf: *mut ::std::os::raw::c_void,
155 name: *const ::std::os::raw::c_char,
156 stbuf: *const ::libc::stat,
157 off: ::libc::off_t,
158 ) -> ::std::os::raw::c_int,
159>;
160
161#[doc = " Processing function"]
162#[doc = ""]
163#[doc = " This function is called if"]
164#[doc = " - option did not match any \'struct fuse_opt\'"]
165#[doc = " - argument is a non-option"]
166#[doc = " - option did match and offset was set to -1"]
167#[doc = ""]
168#[doc = " The \'arg\' parameter will always contain the whole argument or"]
169#[doc = " option including the parameter if exists. A two-argument option"]
170#[doc = " (\"-x foo\") is always converted to single arguemnt option of the"]
171#[doc = " form \"-xfoo\" before this function is called."]
172#[doc = ""]
173#[doc = " Options of the form \'-ofoo\' are passed to this function without the"]
174#[doc = " \'-o\' prefix."]
175#[doc = ""]
176#[doc = " The return value of this function determines whether this argument"]
177#[doc = " is to be inserted into the output argument vector, or discarded."]
178#[doc = ""]
179#[doc = " @param data is the user data passed to the fuse_opt_parse() function"]
180#[doc = " @param arg is the whole argument or option"]
181#[doc = " @param key determines why the processing function was called"]
182#[doc = " @param outargs the current output argument list"]
183#[doc = " @return -1 on error, 0 if arg is to be discarded, 1 if arg should be kept"]
184#[allow(non_camel_case_types)]
185pub type fuse_opt_proc_t = ::std::option::Option<
186 unsafe extern "C" fn(
187 data: *mut ::std::os::raw::c_void,
188 arg: *const ::std::os::raw::c_char,
189 key: ::std::os::raw::c_int,
190 outargs: *mut fuse_args,
191 ) -> ::std::os::raw::c_int,
192>;
193
194#[repr(C)]
195#[derive(Debug, Copy, Clone)]
196#[allow(non_camel_case_types)]
197pub struct fuse_dirhandle {
198 _unused: [u8; 0],
199}
200
201#[allow(non_camel_case_types)]
202pub type fuse_dirh_t = *mut fuse_dirhandle;
203
204#[allow(non_camel_case_types)]
205pub type fuse_dirfil_t = ::std::option::Option<
206 unsafe extern "C" fn(
207 h: fuse_dirh_t,
208 name: *const ::std::os::raw::c_char,
209 type_: ::std::os::raw::c_int,
210 ino: ::libc::ino_t,
211 ) -> ::std::os::raw::c_int,
212>;
213
214#[repr(C)]
215#[derive(Copy, Clone)]
216#[allow(non_camel_case_types)]
217pub struct setattr_x {
218 pub valid: i32,
219 pub mode: ::libc::mode_t,
220 pub uid: ::libc::uid_t,
221 pub gid: ::libc::gid_t,
222 pub size: ::libc::off_t,
223 pub acctime: ::libc::timespec,
224 pub modtime: ::libc::timespec,
225 pub crtime: ::libc::timespec,
226 pub chgtime: ::libc::timespec,
227 pub bkuptime: ::libc::timespec,
228 pub flags: u32,
229}
230
231#[doc = " Handle for a FUSE filesystem"]
232#[repr(C)]
233#[derive(Debug, Copy, Clone)]
234pub struct fuse {
235 _unused: [u8; 0],
236}
237
238#[doc = " Extra context that may be needed by some filesystems"]
239#[doc = ""]
240#[doc = " The uid, gid and pid fields are not filled in case of a writepage"]
241#[doc = " operation."]
242#[repr(C)]
243#[derive(Debug, Copy, Clone)]
244#[allow(non_camel_case_types)]
245pub struct fuse_context {
246 #[doc = " Pointer to the fuse object"]
247 pub fuse: *mut fuse,
248 #[doc = " User ID of the calling process"]
249 pub uid: ::libc::uid_t,
250 #[doc = " Group ID of the calling process"]
251 pub gid: ::libc::gid_t,
252 #[doc = " Thread ID of the calling process"]
253 pub pid: ::libc::pid_t,
254 #[doc = " Private filesystem data"]
255 pub private_data: *mut ::std::os::raw::c_void,
256}
257
258#[doc = " The file system operations:"]
259#[doc = ""]
260#[doc = " Most of these should work very similarly to the well known UNIX"]
261#[doc = " file system operations. A major exception is that instead of"]
262#[doc = " returning an error in \'errno\', the operation should return the"]
263#[doc = " negated error value (-errno) directly."]
264#[doc = ""]
265#[doc = " All methods are optional, but some are essential for a useful"]
266#[doc = " filesystem (e.g. getattr). Open, flush, release, fsync, opendir,"]
267#[doc = " releasedir, fsyncdir, access, create, ftruncate, fgetattr, lock,"]
268#[doc = " init and destroy are special purpose methods, without which a full"]
269#[doc = " featured filesystem can still be implemented."]
270#[repr(C)]
271#[derive(Debug, Copy, Clone)]
272#[allow(non_camel_case_types)]
273pub struct fuse_operations {
274 #[doc = " Get file attributes."]
275 #[doc = ""]
276 #[doc = " Similar to stat(). The \'st_dev\' and \'st_blksize\' fields are"]
277 #[doc = " ignored.\t The \'st_ino\' field is ignored except if the \'use_ino\'"]
278 #[doc = " mount option is given."]
279 pub getattr: ::std::option::Option<
280 unsafe extern "C" fn(
281 path: *const ::std::os::raw::c_char,
282 stbuf: *mut ::libc::stat,
283 ) -> ::std::os::raw::c_int,
284 >,
285
286 #[doc = " Read the target of a symbolic link"]
287 #[doc = ""]
288 #[doc = " The buffer should be filled with a null terminated string. The"]
289 #[doc = " buffer size argument includes the space for the terminating"]
290 #[doc = " null character.\tIf the linkname is too long to fit in the"]
291 #[doc = " buffer, it should be truncated.\tThe return value should be 0"]
292 #[doc = " for success."]
293 pub readlink: ::std::option::Option<
294 unsafe extern "C" fn(
295 arg1: *const ::std::os::raw::c_char,
296 arg2: *mut ::std::os::raw::c_char,
297 arg3: usize,
298 ) -> ::std::os::raw::c_int,
299 >,
300
301 pub getdir: ::std::option::Option<
302 unsafe extern "C" fn(
303 arg1: *const ::std::os::raw::c_char,
304 arg2: fuse_dirh_t,
305 arg3: fuse_dirfil_t,
306 ) -> ::std::os::raw::c_int,
307 >,
308
309 #[doc = " Create a file node"]
310 #[doc = ""]
311 #[doc = " This is called for creation of all non-directory, non-symlink"]
312 #[doc = " nodes. If the filesystem defines a create() method, then for"]
313 #[doc = " regular files that will be called instead."]
314 pub mknod: ::std::option::Option<
315 unsafe extern "C" fn(
316 arg1: *const ::std::os::raw::c_char,
317 arg2: ::libc::mode_t,
318 arg3: ::libc::dev_t,
319 ) -> ::std::os::raw::c_int,
320 >,
321
322 #[doc = " Create a directory"]
323 pub mkdir: ::std::option::Option<
324 unsafe extern "C" fn(
325 arg1: *const ::std::os::raw::c_char,
326 arg2: ::libc::mode_t,
327 ) -> ::std::os::raw::c_int,
328 >,
329
330 #[doc = " Remove a file"]
331 pub unlink: ::std::option::Option<
332 unsafe extern "C" fn(arg1: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int,
333 >,
334
335 #[doc = " Remove a directory"]
336 pub rmdir: ::std::option::Option<
337 unsafe extern "C" fn(arg1: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int,
338 >,
339
340 #[doc = " Create a symbolic link"]
341 pub symlink: ::std::option::Option<
342 unsafe extern "C" fn(
343 arg1: *const ::std::os::raw::c_char,
344 arg2: *const ::std::os::raw::c_char,
345 ) -> ::std::os::raw::c_int,
346 >,
347
348 #[doc = " Rename a file"]
349 pub rename: ::std::option::Option<
350 unsafe extern "C" fn(
351 arg1: *const ::std::os::raw::c_char,
352 arg2: *const ::std::os::raw::c_char,
353 ) -> ::std::os::raw::c_int,
354 >,
355
356 #[doc = " Create a hard link to a file"]
357 pub link: ::std::option::Option<
358 unsafe extern "C" fn(
359 arg1: *const ::std::os::raw::c_char,
360 arg2: *const ::std::os::raw::c_char,
361 ) -> ::std::os::raw::c_int,
362 >,
363
364 #[doc = " Change the permission bits of a file"]
365 pub chmod: ::std::option::Option<
366 unsafe extern "C" fn(
367 arg1: *const ::std::os::raw::c_char,
368 arg2: ::libc::mode_t,
369 ) -> ::std::os::raw::c_int,
370 >,
371
372 #[doc = " Change the owner and group of a file"]
373 pub chown: ::std::option::Option<
374 unsafe extern "C" fn(
375 arg1: *const ::std::os::raw::c_char,
376 arg2: ::libc::uid_t,
377 arg3: ::libc::gid_t,
378 ) -> ::std::os::raw::c_int,
379 >,
380
381 #[doc = " Change the size of a file"]
382 pub truncate: ::std::option::Option<
383 unsafe extern "C" fn(
384 arg1: *const ::std::os::raw::c_char,
385 arg2: ::libc::off_t,
386 ) -> ::std::os::raw::c_int,
387 >,
388
389 #[doc = " Change the access and/or modification times of a file"]
390 #[doc = ""]
391 #[doc = " Deprecated, use utimens() instead."]
392 pub utime: ::std::option::Option<
393 unsafe extern "C" fn(
394 arg1: *const ::std::os::raw::c_char,
395 arg2: *mut ::libc::utimbuf,
396 ) -> ::std::os::raw::c_int,
397 >,
398
399 #[doc = " File open operation"]
400 #[doc = ""]
401 #[doc = " No creation, or truncation flags (O_CREAT, O_EXCL, O_TRUNC)"]
402 #[doc = " will be passed to open(). Open should check if the operation"]
403 #[doc = " is permitted for the given flags. Optionally open may also"]
404 #[doc = " return an arbitrary filehandle in the fuse_file_info structure,"]
405 #[doc = " which will be passed to all file operations."]
406 #[doc = ""]
407 #[doc = " Changed in version 2.2"]
408 pub open: ::std::option::Option<
409 unsafe extern "C" fn(
410 arg1: *const ::std::os::raw::c_char,
411 arg2: *mut fuse_file_info,
412 ) -> ::std::os::raw::c_int,
413 >,
414
415 #[doc = " Read data from an open file"]
416 #[doc = ""]
417 #[doc = " Read should return exactly the number of bytes requested except"]
418 #[doc = " on EOF or error, otherwise the rest of the data will be"]
419 #[doc = " substituted with zeroes.\t An exception to this is when the"]
420 #[doc = " \'direct_io\' mount option is specified, in which case the return"]
421 #[doc = " value of the read system call will reflect the return value of"]
422 #[doc = " this operation."]
423 #[doc = ""]
424 #[doc = " Changed in version 2.2"]
425 pub read: ::std::option::Option<
426 unsafe extern "C" fn(
427 arg1: *const ::std::os::raw::c_char,
428 arg2: *mut ::std::os::raw::c_char,
429 arg3: usize,
430 arg4: ::libc::off_t,
431 arg5: *mut fuse_file_info,
432 ) -> ::std::os::raw::c_int,
433 >,
434
435 #[doc = " Write data to an open file"]
436 #[doc = ""]
437 #[doc = " Write should return exactly the number of bytes requested"]
438 #[doc = " except on error.\t An exception to this is when the \'direct_io\'"]
439 #[doc = " mount option is specified (see read operation)."]
440 #[doc = ""]
441 #[doc = " Changed in version 2.2"]
442 pub write: ::std::option::Option<
443 unsafe extern "C" fn(
444 arg1: *const ::std::os::raw::c_char,
445 arg2: *const ::std::os::raw::c_char,
446 arg3: usize,
447 arg4: ::libc::off_t,
448 arg5: *mut fuse_file_info,
449 ) -> ::std::os::raw::c_int,
450 >,
451
452 #[doc = " Get file system statistics"]
453 #[doc = ""]
454 #[doc = " The \'f_frsize\', \'f_favail\', \'f_fsid\' and \'f_flag\' fields are ignored"]
455 #[doc = ""]
456 #[doc = " Replaced \'struct statfs\' parameter with \'struct statvfs\' in"]
457 #[doc = " version 2.5"]
458 pub statfs: ::std::option::Option<
459 unsafe extern "C" fn(
460 arg1: *const ::std::os::raw::c_char,
461 arg2: *mut ::libc::statvfs,
462 ) -> ::std::os::raw::c_int,
463 >,
464
465 #[doc = " Possibly flush cached data"]
466 #[doc = ""]
467 #[doc = " BIG NOTE: This is not equivalent to fsync(). It\'s not a"]
468 #[doc = " request to sync dirty data."]
469 #[doc = ""]
470 #[doc = " Flush is called on each close() of a file descriptor. So if a"]
471 #[doc = " filesystem wants to return write errors in close() and the file"]
472 #[doc = " has cached dirty data, this is a good place to write back data"]
473 #[doc = " and return any errors. Since many applications ignore close()"]
474 #[doc = " errors this is not always useful."]
475 #[doc = ""]
476 #[doc = " NOTE: The flush() method may be called more than once for each"]
477 #[doc = " open().\tThis happens if more than one file descriptor refers"]
478 #[doc = " to an opened file due to dup(), dup2() or fork() calls.\tIt is"]
479 #[doc = " not possible to determine if a flush is final, so each flush"]
480 #[doc = " should be treated equally. Multiple write-flush sequences are"]
481 #[doc = " relatively rare, so this shouldn\'t be a problem."]
482 #[doc = ""]
483 #[doc = " Filesystems shouldn\'t assume that flush will always be called"]
484 #[doc = " after some writes, or that if will be called at all."]
485 #[doc = ""]
486 #[doc = " Changed in version 2.2"]
487 pub flush: ::std::option::Option<
488 unsafe extern "C" fn(
489 arg1: *const ::std::os::raw::c_char,
490 arg2: *mut fuse_file_info,
491 ) -> ::std::os::raw::c_int,
492 >,
493
494 #[doc = " Release an open file"]
495 #[doc = ""]
496 #[doc = " Release is called when there are no more references to an open"]
497 #[doc = " file: all file descriptors are closed and all memory mappings"]
498 #[doc = " are unmapped."]
499 #[doc = ""]
500 #[doc = " For every open() call there will be exactly one release() call"]
501 #[doc = " with the same flags and file descriptor.\t It is possible to"]
502 #[doc = " have a file opened more than once, in which case only the last"]
503 #[doc = " release will mean, that no more reads/writes will happen on the"]
504 #[doc = " file. The return value of release is ignored."]
505 #[doc = ""]
506 #[doc = " Changed in version 2.2"]
507 pub release: ::std::option::Option<
508 unsafe extern "C" fn(
509 arg1: *const ::std::os::raw::c_char,
510 arg2: *mut fuse_file_info,
511 ) -> ::std::os::raw::c_int,
512 >,
513
514 #[doc = " Synchronize file contents"]
515 #[doc = ""]
516 #[doc = " If the datasync parameter is non-zero, then only the user data"]
517 #[doc = " should be flushed, not the meta data."]
518 #[doc = ""]
519 #[doc = " Changed in version 2.2"]
520 pub fsync: ::std::option::Option<
521 unsafe extern "C" fn(
522 arg1: *const ::std::os::raw::c_char,
523 arg2: ::std::os::raw::c_int,
524 arg3: *mut fuse_file_info,
525 ) -> ::std::os::raw::c_int,
526 >,
527
528 pub setxattr: ::std::option::Option<
529 unsafe extern "C" fn(
530 arg1: *const ::std::os::raw::c_char,
531 arg2: *const ::std::os::raw::c_char,
532 arg3: *const ::std::os::raw::c_char,
533 arg4: usize,
534 arg5: ::std::os::raw::c_int,
535 arg6: u32,
536 ) -> ::std::os::raw::c_int,
537 >,
538
539 pub getxattr: ::std::option::Option<
540 unsafe extern "C" fn(
541 arg1: *const ::std::os::raw::c_char,
542 arg2: *const ::std::os::raw::c_char,
543 arg3: *mut ::std::os::raw::c_char,
544 arg4: usize,
545 arg5: u32,
546 ) -> ::std::os::raw::c_int,
547 >,
548
549 #[doc = " List extended attributes"]
550 pub listxattr: ::std::option::Option<
551 unsafe extern "C" fn(
552 arg1: *const ::std::os::raw::c_char,
553 arg2: *mut ::std::os::raw::c_char,
554 arg3: usize,
555 ) -> ::std::os::raw::c_int,
556 >,
557
558 #[doc = " Remove extended attributes"]
559 pub removexattr: ::std::option::Option<
560 unsafe extern "C" fn(
561 arg1: *const ::std::os::raw::c_char,
562 arg2: *const ::std::os::raw::c_char,
563 ) -> ::std::os::raw::c_int,
564 >,
565
566 #[doc = " Open directory"]
567 #[doc = ""]
568 #[doc = " This method should check if the open operation is permitted for"]
569 #[doc = " this directory"]
570 #[doc = ""]
571 #[doc = " Introduced in version 2.3"]
572 pub opendir: ::std::option::Option<
573 unsafe extern "C" fn(
574 arg1: *const ::std::os::raw::c_char,
575 arg2: *mut fuse_file_info,
576 ) -> ::std::os::raw::c_int,
577 >,
578
579 #[doc = " Read directory"]
580 #[doc = ""]
581 #[doc = " This supersedes the old getdir() interface. New applications"]
582 #[doc = " should use this."]
583 #[doc = ""]
584 #[doc = " The filesystem may choose between two modes of operation:"]
585 #[doc = ""]
586 #[doc = " 1) The readdir implementation ignores the offset parameter, and"]
587 #[doc = " passes zero to the filler function\'s offset. The filler"]
588 #[doc = " function will not return \'1\' (unless an error happens), so the"]
589 #[doc = " whole directory is read in a single readdir operation. This"]
590 #[doc = " works just like the old getdir() method."]
591 #[doc = ""]
592 #[doc = " 2) The readdir implementation keeps track of the offsets of the"]
593 #[doc = " directory entries. It uses the offset parameter and always"]
594 #[doc = " passes non-zero offset to the filler function. When the buffer"]
595 #[doc = " is full (or an error happens) the filler function will return"]
596 #[doc = " \'1\'."]
597 #[doc = ""]
598 #[doc = " Introduced in version 2.3"]
599 pub readdir: ::std::option::Option<
600 unsafe extern "C" fn(
601 arg1: *const ::std::os::raw::c_char,
602 arg2: *mut ::std::os::raw::c_void,
603 arg3: fuse_fill_dir_t,
604 arg4: ::libc::off_t,
605 arg5: *mut fuse_file_info,
606 ) -> ::std::os::raw::c_int,
607 >,
608
609 #[doc = " Release directory"]
610 #[doc = ""]
611 #[doc = " Introduced in version 2.3"]
612 pub releasedir: ::std::option::Option<
613 unsafe extern "C" fn(
614 arg1: *const ::std::os::raw::c_char,
615 arg2: *mut fuse_file_info,
616 ) -> ::std::os::raw::c_int,
617 >,
618
619 #[doc = " Synchronize directory contents"]
620 #[doc = ""]
621 #[doc = " If the datasync parameter is non-zero, then only the user data"]
622 #[doc = " should be flushed, not the meta data"]
623 #[doc = ""]
624 #[doc = " Introduced in version 2.3"]
625 pub fsyncdir: ::std::option::Option<
626 unsafe extern "C" fn(
627 arg1: *const ::std::os::raw::c_char,
628 arg2: ::std::os::raw::c_int,
629 arg3: *mut fuse_file_info,
630 ) -> ::std::os::raw::c_int,
631 >,
632
633 #[doc = " Initialize filesystem"]
634 #[doc = ""]
635 #[doc = " The return value will passed in the private_data field of"]
636 #[doc = " fuse_context to all file operations and as a parameter to the"]
637 #[doc = " destroy() method."]
638 #[doc = ""]
639 #[doc = " Introduced in version 2.3"]
640 #[doc = " Changed in version 2.6"]
641 pub init: ::std::option::Option<
642 unsafe extern "C" fn(conn: *mut fuse_conn_info) -> *mut ::std::os::raw::c_void,
643 >,
644
645 #[doc = " Clean up filesystem"]
646 #[doc = ""]
647 #[doc = " Called on filesystem exit."]
648 #[doc = ""]
649 #[doc = " Introduced in version 2.3"]
650 pub destroy: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>,
651
652 #[doc = " Check file access permissions"]
653 #[doc = ""]
654 #[doc = " This will be called for the access() system call. If the"]
655 #[doc = " \'default_permissions\' mount option is given, this method is not"]
656 #[doc = " called."]
657 #[doc = ""]
658 #[doc = " This method is not called under Linux kernel versions 2.4.x"]
659 #[doc = ""]
660 #[doc = " Introduced in version 2.5"]
661 pub access: ::std::option::Option<
662 unsafe extern "C" fn(
663 arg1: *const ::std::os::raw::c_char,
664 arg2: ::std::os::raw::c_int,
665 ) -> ::std::os::raw::c_int,
666 >,
667
668 #[doc = " Create and open a file"]
669 #[doc = ""]
670 #[doc = " If the file does not exist, first create it with the specified"]
671 #[doc = " mode, and then open it."]
672 #[doc = ""]
673 #[doc = " If this method is not implemented or under Linux kernel"]
674 #[doc = " versions earlier than 2.6.15, the mknod() and open() methods"]
675 #[doc = " will be called instead."]
676 #[doc = ""]
677 #[doc = " Introduced in version 2.5"]
678 pub create: ::std::option::Option<
679 unsafe extern "C" fn(
680 arg1: *const ::std::os::raw::c_char,
681 arg2: ::libc::mode_t,
682 arg3: *mut fuse_file_info,
683 ) -> ::std::os::raw::c_int,
684 >,
685
686 #[doc = " Change the size of an open file"]
687 #[doc = ""]
688 #[doc = " This method is called instead of the truncate() method if the"]
689 #[doc = " truncation was invoked from an ftruncate() system call."]
690 #[doc = ""]
691 #[doc = " If this method is not implemented or under Linux kernel"]
692 #[doc = " versions earlier than 2.6.15, the truncate() method will be"]
693 #[doc = " called instead."]
694 #[doc = ""]
695 #[doc = " Introduced in version 2.5"]
696 pub ftruncate: ::std::option::Option<
697 unsafe extern "C" fn(
698 arg1: *const ::std::os::raw::c_char,
699 arg2: ::libc::off_t,
700 arg3: *mut fuse_file_info,
701 ) -> ::std::os::raw::c_int,
702 >,
703
704 #[doc = " Get attributes from an open file"]
705 #[doc = ""]
706 #[doc = " This method is called instead of the getattr() method if the"]
707 #[doc = " file information is available."]
708 #[doc = ""]
709 #[doc = " Currently this is only called after the create() method if that"]
710 #[doc = " is implemented (see above). Later it may be called for"]
711 #[doc = " invocations of fstat() too."]
712 #[doc = ""]
713 #[doc = " Introduced in version 2.5"]
714 pub fgetattr: ::std::option::Option<
715 unsafe extern "C" fn(
716 arg1: *const ::std::os::raw::c_char,
717 arg2: *mut ::libc::stat,
718 arg3: *mut fuse_file_info,
719 ) -> ::std::os::raw::c_int,
720 >,
721
722 #[doc = " Perform POSIX file locking operation"]
723 #[doc = ""]
724 #[doc = " The cmd argument will be either F_GETLK, F_SETLK or F_SETLKW."]
725 #[doc = ""]
726 #[doc = " For the meaning of fields in \'struct flock\' see the man page"]
727 #[doc = " for fcntl(2). The l_whence field will always be set to"]
728 #[doc = " SEEK_SET."]
729 #[doc = ""]
730 #[doc = " For checking lock ownership, the \'fuse_file_info->owner\'"]
731 #[doc = " argument must be used."]
732 #[doc = ""]
733 #[doc = " For F_GETLK operation, the library will first check currently"]
734 #[doc = " held locks, and if a conflicting lock is found it will return"]
735 #[doc = " information without calling this method.\t This ensures, that"]
736 #[doc = " for local locks the l_pid field is correctly filled in.\tThe"]
737 #[doc = " results may not be accurate in case of race conditions and in"]
738 #[doc = " the presence of hard links, but it\'s unlikly that an"]
739 #[doc = " application would rely on accurate GETLK results in these"]
740 #[doc = " cases. If a conflicting lock is not found, this method will be"]
741 #[doc = " called, and the filesystem may fill out l_pid by a meaningful"]
742 #[doc = " value, or it may leave this field zero."]
743 #[doc = ""]
744 #[doc = " For F_SETLK and F_SETLKW the l_pid field will be set to the pid"]
745 #[doc = " of the process performing the locking operation."]
746 #[doc = ""]
747 #[doc = " Note: if this method is not implemented, the kernel will still"]
748 #[doc = " allow file locking to work locally. Hence it is only"]
749 #[doc = " interesting for network filesystems and similar."]
750 #[doc = ""]
751 #[doc = " Introduced in version 2.6"]
752 pub lock: ::std::option::Option<
753 unsafe extern "C" fn(
754 arg1: *const ::std::os::raw::c_char,
755 arg2: *mut fuse_file_info,
756 cmd: ::std::os::raw::c_int,
757 arg3: *mut ::libc::flock,
758 ) -> ::std::os::raw::c_int,
759 >,
760
761 #[doc = " Change the access and modification times of a file with"]
762 #[doc = " nanosecond resolution"]
763 #[doc = ""]
764 #[doc = " Introduced in version 2.6"]
765 pub utimens: ::std::option::Option<
766 unsafe extern "C" fn(
767 arg1: *const ::std::os::raw::c_char,
768 tv: *const ::libc::timespec,
769 ) -> ::std::os::raw::c_int,
770 >,
771
772 #[doc = " Map block index within file to block index within device"]
773 #[doc = ""]
774 #[doc = " Note: This makes sense only for block device backed filesystems"]
775 #[doc = " mounted with the \'blkdev\' option"]
776 #[doc = ""]
777 #[doc = " Introduced in version 2.6"]
778 pub bmap: ::std::option::Option<
779 unsafe extern "C" fn(
780 arg1: *const ::std::os::raw::c_char,
781 blocksize: usize,
782 idx: *mut u64,
783 ) -> ::std::os::raw::c_int,
784 >,
785
786 pub reserved00: ::std::option::Option<
787 unsafe extern "C" fn(
788 arg1: *mut ::std::os::raw::c_void,
789 arg2: *mut ::std::os::raw::c_void,
790 arg3: *mut ::std::os::raw::c_void,
791 arg4: *mut ::std::os::raw::c_void,
792 arg5: *mut ::std::os::raw::c_void,
793 arg6: *mut ::std::os::raw::c_void,
794 arg7: *mut ::std::os::raw::c_void,
795 arg8: *mut ::std::os::raw::c_void,
796 ) -> ::std::os::raw::c_int,
797 >,
798
799 pub reserved01: ::std::option::Option<
800 unsafe extern "C" fn(
801 arg1: *mut ::std::os::raw::c_void,
802 arg2: *mut ::std::os::raw::c_void,
803 arg3: *mut ::std::os::raw::c_void,
804 arg4: *mut ::std::os::raw::c_void,
805 arg5: *mut ::std::os::raw::c_void,
806 arg6: *mut ::std::os::raw::c_void,
807 arg7: *mut ::std::os::raw::c_void,
808 arg8: *mut ::std::os::raw::c_void,
809 ) -> ::std::os::raw::c_int,
810 >,
811
812 pub reserved02: ::std::option::Option<
813 unsafe extern "C" fn(
814 arg1: *mut ::std::os::raw::c_void,
815 arg2: *mut ::std::os::raw::c_void,
816 arg3: *mut ::std::os::raw::c_void,
817 arg4: *mut ::std::os::raw::c_void,
818 arg5: *mut ::std::os::raw::c_void,
819 arg6: *mut ::std::os::raw::c_void,
820 arg7: *mut ::std::os::raw::c_void,
821 arg8: *mut ::std::os::raw::c_void,
822 ) -> ::std::os::raw::c_int,
823 >,
824
825 pub reserved03: ::std::option::Option<
826 unsafe extern "C" fn(
827 arg1: *mut ::std::os::raw::c_void,
828 arg2: *mut ::std::os::raw::c_void,
829 arg3: *mut ::std::os::raw::c_void,
830 arg4: *mut ::std::os::raw::c_void,
831 arg5: *mut ::std::os::raw::c_void,
832 arg6: *mut ::std::os::raw::c_void,
833 arg7: *mut ::std::os::raw::c_void,
834 arg8: *mut ::std::os::raw::c_void,
835 ) -> ::std::os::raw::c_int,
836 >,
837
838 pub reserved04: ::std::option::Option<
839 unsafe extern "C" fn(
840 arg1: *mut ::std::os::raw::c_void,
841 arg2: *mut ::std::os::raw::c_void,
842 arg3: *mut ::std::os::raw::c_void,
843 arg4: *mut ::std::os::raw::c_void,
844 arg5: *mut ::std::os::raw::c_void,
845 arg6: *mut ::std::os::raw::c_void,
846 arg7: *mut ::std::os::raw::c_void,
847 arg8: *mut ::std::os::raw::c_void,
848 ) -> ::std::os::raw::c_int,
849 >,
850
851 pub reserved05: ::std::option::Option<
852 unsafe extern "C" fn(
853 arg1: *mut ::std::os::raw::c_void,
854 arg2: *mut ::std::os::raw::c_void,
855 arg3: *mut ::std::os::raw::c_void,
856 arg4: *mut ::std::os::raw::c_void,
857 arg5: *mut ::std::os::raw::c_void,
858 arg6: *mut ::std::os::raw::c_void,
859 arg7: *mut ::std::os::raw::c_void,
860 arg8: *mut ::std::os::raw::c_void,
861 ) -> ::std::os::raw::c_int,
862 >,
863
864 pub reserved06: ::std::option::Option<
865 unsafe extern "C" fn(
866 arg1: *mut ::std::os::raw::c_void,
867 arg2: *mut ::std::os::raw::c_void,
868 arg3: *mut ::std::os::raw::c_void,
869 arg4: *mut ::std::os::raw::c_void,
870 arg5: *mut ::std::os::raw::c_void,
871 arg6: *mut ::std::os::raw::c_void,
872 arg7: *mut ::std::os::raw::c_void,
873 arg8: *mut ::std::os::raw::c_void,
874 ) -> ::std::os::raw::c_int,
875 >,
876
877 pub reserved07: ::std::option::Option<
878 unsafe extern "C" fn(
879 arg1: *mut ::std::os::raw::c_void,
880 arg2: *mut ::std::os::raw::c_void,
881 arg3: *mut ::std::os::raw::c_void,
882 arg4: *mut ::std::os::raw::c_void,
883 arg5: *mut ::std::os::raw::c_void,
884 arg6: *mut ::std::os::raw::c_void,
885 arg7: *mut ::std::os::raw::c_void,
886 arg8: *mut ::std::os::raw::c_void,
887 ) -> ::std::os::raw::c_int,
888 >,
889
890 pub reserved08: ::std::option::Option<
891 unsafe extern "C" fn(
892 arg1: *mut ::std::os::raw::c_void,
893 arg2: *mut ::std::os::raw::c_void,
894 arg3: *mut ::std::os::raw::c_void,
895 arg4: *mut ::std::os::raw::c_void,
896 arg5: *mut ::std::os::raw::c_void,
897 arg6: *mut ::std::os::raw::c_void,
898 arg7: *mut ::std::os::raw::c_void,
899 arg8: *mut ::std::os::raw::c_void,
900 ) -> ::std::os::raw::c_int,
901 >,
902
903 pub reserved09: ::std::option::Option<
904 unsafe extern "C" fn(
905 arg1: *mut ::std::os::raw::c_void,
906 arg2: *mut ::std::os::raw::c_void,
907 arg3: *mut ::std::os::raw::c_void,
908 arg4: *mut ::std::os::raw::c_void,
909 arg5: *mut ::std::os::raw::c_void,
910 arg6: *mut ::std::os::raw::c_void,
911 arg7: *mut ::std::os::raw::c_void,
912 arg8: *mut ::std::os::raw::c_void,
913 ) -> ::std::os::raw::c_int,
914 >,
915
916 pub reserved10: ::std::option::Option<
917 unsafe extern "C" fn(
918 arg1: *mut ::std::os::raw::c_void,
919 arg2: *mut ::std::os::raw::c_void,
920 arg3: *mut ::std::os::raw::c_void,
921 arg4: *mut ::std::os::raw::c_void,
922 arg5: *mut ::std::os::raw::c_void,
923 arg6: *mut ::std::os::raw::c_void,
924 arg7: *mut ::std::os::raw::c_void,
925 arg8: *mut ::std::os::raw::c_void,
926 ) -> ::std::os::raw::c_int,
927 >,
928
929 pub setvolname: ::std::option::Option<
930 unsafe extern "C" fn(arg1: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int,
931 >,
932
933 pub exchange: ::std::option::Option<
934 unsafe extern "C" fn(
935 arg1: *const ::std::os::raw::c_char,
936 arg2: *const ::std::os::raw::c_char,
937 arg3: ::std::os::raw::c_ulong,
938 ) -> ::std::os::raw::c_int,
939 >,
940
941 pub getxtimes: ::std::option::Option<
942 unsafe extern "C" fn(
943 arg1: *const ::std::os::raw::c_char,
944 bkuptime: *mut ::libc::timespec,
945 crtime: *mut ::libc::timespec,
946 ) -> ::std::os::raw::c_int,
947 >,
948
949 pub setbkuptime: ::std::option::Option<
950 unsafe extern "C" fn(
951 arg1: *const ::std::os::raw::c_char,
952 tv: *const ::libc::timespec,
953 ) -> ::std::os::raw::c_int,
954 >,
955
956 pub setchgtime: ::std::option::Option<
957 unsafe extern "C" fn(
958 arg1: *const ::std::os::raw::c_char,
959 tv: *const ::libc::timespec,
960 ) -> ::std::os::raw::c_int,
961 >,
962
963 pub setcrtime: ::std::option::Option<
964 unsafe extern "C" fn(
965 arg1: *const ::std::os::raw::c_char,
966 tv: *const ::libc::timespec,
967 ) -> ::std::os::raw::c_int,
968 >,
969
970 pub chflags: ::std::option::Option<
971 unsafe extern "C" fn(
972 arg1: *const ::std::os::raw::c_char,
973 arg2: u32,
974 ) -> ::std::os::raw::c_int,
975 >,
976
977 pub setattr_x: ::std::option::Option<
978 unsafe extern "C" fn(
979 arg1: *const ::std::os::raw::c_char,
980 arg2: *mut setattr_x,
981 ) -> ::std::os::raw::c_int,
982 >,
983
984 pub fsetattr_x: ::std::option::Option<
985 unsafe extern "C" fn(
986 arg1: *const ::std::os::raw::c_char,
987 arg2: *mut setattr_x,
988 arg3: *mut fuse_file_info,
989 ) -> ::std::os::raw::c_int,
990 >,
991}
992
993extern "C" {
994 #[doc = " The real main function"]
995 #[doc = ""]
996 #[doc = " Do not call this directly, use fuse_main()"]
997 #[link_name = "fuse_main_real"]
998 pub fn fuse_main_real(
999 argc: ::std::os::raw::c_int,
1000 argv: *mut *mut ::std::os::raw::c_char,
1001 op: *const fuse_operations,
1002 op_size: usize,
1003 user_data: *mut ::std::os::raw::c_void,
1004 ) -> ::std::os::raw::c_int;
1005
1006 #[doc = " Get the current context"]
1007 #[doc = ""]
1008 #[doc = " The context is only valid for the duration of a filesystem"]
1009 #[doc = " operation, and thus must not be stored and used later."]
1010 #[doc = ""]
1011 #[doc = " @return the context"]
1012 #[link_name = "fuse_get_context"]
1013 pub fn fuse_get_context() -> *mut fuse_context;
1014
1015 #[doc = " Option parsing function"]
1016 #[doc = ""]
1017 #[doc = " If \'args\' was returned from a previous call to fuse_opt_parse() or"]
1018 #[doc = " it was constructed from"]
1019 #[doc = ""]
1020 #[doc = " A NULL \'args\' is equivalent to an empty argument vector"]
1021 #[doc = ""]
1022 #[doc = " A NULL \'opts\' is equivalent to an \'opts\' array containing a single"]
1023 #[doc = " end marker"]
1024 #[doc = ""]
1025 #[doc = " A NULL \'proc\' is equivalent to a processing function always"]
1026 #[doc = " returning \'1\'"]
1027 #[doc = ""]
1028 #[doc = " @param args is the input and output argument list"]
1029 #[doc = " @param data is the user data"]
1030 #[doc = " @param opts is the option description array"]
1031 #[doc = " @param proc is the processing function"]
1032 #[doc = " @return -1 on error, 0 on success"]
1033 #[link_name = "fuse_opt_parse"]
1034 pub fn fuse_opt_parse(
1035 args: *mut fuse_args,
1036 data: *mut ::std::os::raw::c_void,
1037 opts: *const fuse_opt,
1038 proc_: fuse_opt_proc_t,
1039 ) -> ::std::os::raw::c_int;
1040
1041 #[doc = " Add an option to a comma separated option list"]
1042 #[doc = ""]
1043 #[doc = " @param opts is a pointer to an option list, may point to a NULL value"]
1044 #[doc = " @param opt is the option to add"]
1045 #[doc = " @return -1 on allocation error, 0 on success"]
1046 #[link_name = "fuse_opt_add_opt"]
1047 pub fn fuse_opt_add_opt(
1048 opts: *mut *mut ::std::os::raw::c_char,
1049 opt: *const ::std::os::raw::c_char,
1050 ) -> ::std::os::raw::c_int;
1051
1052 #[doc = " Add an argument to a NULL terminated argument vector"]
1053 #[doc = ""]
1054 #[doc = " @param args is the structure containing the current argument list"]
1055 #[doc = " @param arg is the new argument to add"]
1056 #[doc = " @return -1 on allocation error, 0 on success"]
1057 #[link_name = "fuse_opt_add_arg"]
1058 pub fn fuse_opt_add_arg(
1059 args: *mut fuse_args,
1060 arg: *const ::std::os::raw::c_char,
1061 ) -> ::std::os::raw::c_int;
1062
1063 #[doc = " Add an argument at the specified position in a NULL terminated"]
1064 #[doc = " argument vector"]
1065 #[doc = ""]
1066 #[doc = " Adds the argument to the N-th position. This is useful for adding"]
1067 #[doc = " options at the beggining of the array which must not come after the"]
1068 #[doc = " special \'--\' option."]
1069 #[doc = ""]
1070 #[doc = " @param args is the structure containing the current argument list"]
1071 #[doc = " @param pos is the position at which to add the argument"]
1072 #[doc = " @param arg is the new argument to add"]
1073 #[doc = " @return -1 on allocation error, 0 on success"]
1074 #[link_name = "fuse_opt_insert_arg"]
1075 pub fn fuse_opt_insert_arg(
1076 args: *mut fuse_args,
1077 pos: ::std::os::raw::c_int,
1078 arg: *const ::std::os::raw::c_char,
1079 ) -> ::std::os::raw::c_int;
1080
1081 #[doc = " Free the contents of argument list"]
1082 #[doc = ""]
1083 #[doc = " The structure itself is not freed"]
1084 #[doc = ""]
1085 #[doc = " @param args is the structure containing the argument list"]
1086 #[link_name = "fuse_opt_free_args"]
1087 pub fn fuse_opt_free_args(args: *mut fuse_args);
1088
1089 #[doc = " Check if an option matches"]
1090 #[doc = ""]
1091 #[doc = " @param opts is the option description array"]
1092 #[doc = " @param opt is the option to match"]
1093 #[doc = " @return 1 if a match is found, 0 if not"]
1094 #[link_name = "fuse_opt_match"]
1095 pub fn fuse_opt_match(
1096 opts: *const fuse_opt,
1097 opt: *const ::std::os::raw::c_char,
1098 ) -> ::std::os::raw::c_int;
1099}
1100
1101#[test]
1102fn bindgen_test_layout_fuse_context() {
1103 assert_eq!(
1104 ::std::mem::size_of::<fuse_context>(),
1105 32usize,
1106 concat!("Size of: ", stringify!(fuse_context))
1107 );
1108 assert_eq!(
1109 ::std::mem::align_of::<fuse_context>(),
1110 8usize,
1111 concat!("Alignment of ", stringify!(fuse_context))
1112 );
1113 assert_eq!(
1114 unsafe { &(*(::std::ptr::null::<fuse_context>())).fuse as *const _ as usize },
1115 0usize,
1116 concat!(
1117 "Offset of field: ",
1118 stringify!(fuse_context),
1119 "::",
1120 stringify!(fuse)
1121 )
1122 );
1123 assert_eq!(
1124 unsafe { &(*(::std::ptr::null::<fuse_context>())).uid as *const _ as usize },
1125 8usize,
1126 concat!(
1127 "Offset of field: ",
1128 stringify!(fuse_context),
1129 "::",
1130 stringify!(uid)
1131 )
1132 );
1133 assert_eq!(
1134 unsafe { &(*(::std::ptr::null::<fuse_context>())).gid as *const _ as usize },
1135 12usize,
1136 concat!(
1137 "Offset of field: ",
1138 stringify!(fuse_context),
1139 "::",
1140 stringify!(gid)
1141 )
1142 );
1143 assert_eq!(
1144 unsafe { &(*(::std::ptr::null::<fuse_context>())).pid as *const _ as usize },
1145 16usize,
1146 concat!(
1147 "Offset of field: ",
1148 stringify!(fuse_context),
1149 "::",
1150 stringify!(pid)
1151 )
1152 );
1153 assert_eq!(
1154 unsafe { &(*(::std::ptr::null::<fuse_context>())).private_data as *const _ as usize },
1155 24usize,
1156 concat!(
1157 "Offset of field: ",
1158 stringify!(fuse_context),
1159 "::",
1160 stringify!(private_data)
1161 )
1162 );
1163}
1164#[test]
1165fn bindgen_test_layout_fuse_operations() {
1166 assert_eq!(
1167 ::std::mem::size_of::<fuse_operations>(),
1168 464usize,
1169 concat!("Size of: ", stringify!(fuse_operations))
1170 );
1171 assert_eq!(
1172 ::std::mem::align_of::<fuse_operations>(),
1173 8usize,
1174 concat!("Alignment of ", stringify!(fuse_operations))
1175 );
1176 assert_eq!(
1177 unsafe { &(*(::std::ptr::null::<fuse_operations>())).getattr as *const _ as usize },
1178 0usize,
1179 concat!(
1180 "Offset of field: ",
1181 stringify!(fuse_operations),
1182 "::",
1183 stringify!(getattr)
1184 )
1185 );
1186 assert_eq!(
1187 unsafe { &(*(::std::ptr::null::<fuse_operations>())).readlink as *const _ as usize },
1188 8usize,
1189 concat!(
1190 "Offset of field: ",
1191 stringify!(fuse_operations),
1192 "::",
1193 stringify!(readlink)
1194 )
1195 );
1196 assert_eq!(
1197 unsafe { &(*(::std::ptr::null::<fuse_operations>())).getdir as *const _ as usize },
1198 16usize,
1199 concat!(
1200 "Offset of field: ",
1201 stringify!(fuse_operations),
1202 "::",
1203 stringify!(getdir)
1204 )
1205 );
1206 assert_eq!(
1207 unsafe { &(*(::std::ptr::null::<fuse_operations>())).mknod as *const _ as usize },
1208 24usize,
1209 concat!(
1210 "Offset of field: ",
1211 stringify!(fuse_operations),
1212 "::",
1213 stringify!(mknod)
1214 )
1215 );
1216 assert_eq!(
1217 unsafe { &(*(::std::ptr::null::<fuse_operations>())).mkdir as *const _ as usize },
1218 32usize,
1219 concat!(
1220 "Offset of field: ",
1221 stringify!(fuse_operations),
1222 "::",
1223 stringify!(mkdir)
1224 )
1225 );
1226 assert_eq!(
1227 unsafe { &(*(::std::ptr::null::<fuse_operations>())).unlink as *const _ as usize },
1228 40usize,
1229 concat!(
1230 "Offset of field: ",
1231 stringify!(fuse_operations),
1232 "::",
1233 stringify!(unlink)
1234 )
1235 );
1236 assert_eq!(
1237 unsafe { &(*(::std::ptr::null::<fuse_operations>())).rmdir as *const _ as usize },
1238 48usize,
1239 concat!(
1240 "Offset of field: ",
1241 stringify!(fuse_operations),
1242 "::",
1243 stringify!(rmdir)
1244 )
1245 );
1246 assert_eq!(
1247 unsafe { &(*(::std::ptr::null::<fuse_operations>())).symlink as *const _ as usize },
1248 56usize,
1249 concat!(
1250 "Offset of field: ",
1251 stringify!(fuse_operations),
1252 "::",
1253 stringify!(symlink)
1254 )
1255 );
1256 assert_eq!(
1257 unsafe { &(*(::std::ptr::null::<fuse_operations>())).rename as *const _ as usize },
1258 64usize,
1259 concat!(
1260 "Offset of field: ",
1261 stringify!(fuse_operations),
1262 "::",
1263 stringify!(rename)
1264 )
1265 );
1266 assert_eq!(
1267 unsafe { &(*(::std::ptr::null::<fuse_operations>())).link as *const _ as usize },
1268 72usize,
1269 concat!(
1270 "Offset of field: ",
1271 stringify!(fuse_operations),
1272 "::",
1273 stringify!(link)
1274 )
1275 );
1276 assert_eq!(
1277 unsafe { &(*(::std::ptr::null::<fuse_operations>())).chmod as *const _ as usize },
1278 80usize,
1279 concat!(
1280 "Offset of field: ",
1281 stringify!(fuse_operations),
1282 "::",
1283 stringify!(chmod)
1284 )
1285 );
1286 assert_eq!(
1287 unsafe { &(*(::std::ptr::null::<fuse_operations>())).chown as *const _ as usize },
1288 88usize,
1289 concat!(
1290 "Offset of field: ",
1291 stringify!(fuse_operations),
1292 "::",
1293 stringify!(chown)
1294 )
1295 );
1296 assert_eq!(
1297 unsafe { &(*(::std::ptr::null::<fuse_operations>())).truncate as *const _ as usize },
1298 96usize,
1299 concat!(
1300 "Offset of field: ",
1301 stringify!(fuse_operations),
1302 "::",
1303 stringify!(truncate)
1304 )
1305 );
1306 assert_eq!(
1307 unsafe { &(*(::std::ptr::null::<fuse_operations>())).utime as *const _ as usize },
1308 104usize,
1309 concat!(
1310 "Offset of field: ",
1311 stringify!(fuse_operations),
1312 "::",
1313 stringify!(utime)
1314 )
1315 );
1316 assert_eq!(
1317 unsafe { &(*(::std::ptr::null::<fuse_operations>())).open as *const _ as usize },
1318 112usize,
1319 concat!(
1320 "Offset of field: ",
1321 stringify!(fuse_operations),
1322 "::",
1323 stringify!(open)
1324 )
1325 );
1326 assert_eq!(
1327 unsafe { &(*(::std::ptr::null::<fuse_operations>())).read as *const _ as usize },
1328 120usize,
1329 concat!(
1330 "Offset of field: ",
1331 stringify!(fuse_operations),
1332 "::",
1333 stringify!(read)
1334 )
1335 );
1336 assert_eq!(
1337 unsafe { &(*(::std::ptr::null::<fuse_operations>())).write as *const _ as usize },
1338 128usize,
1339 concat!(
1340 "Offset of field: ",
1341 stringify!(fuse_operations),
1342 "::",
1343 stringify!(write)
1344 )
1345 );
1346 assert_eq!(
1347 unsafe { &(*(::std::ptr::null::<fuse_operations>())).statfs as *const _ as usize },
1348 136usize,
1349 concat!(
1350 "Offset of field: ",
1351 stringify!(fuse_operations),
1352 "::",
1353 stringify!(statfs)
1354 )
1355 );
1356 assert_eq!(
1357 unsafe { &(*(::std::ptr::null::<fuse_operations>())).flush as *const _ as usize },
1358 144usize,
1359 concat!(
1360 "Offset of field: ",
1361 stringify!(fuse_operations),
1362 "::",
1363 stringify!(flush)
1364 )
1365 );
1366 assert_eq!(
1367 unsafe { &(*(::std::ptr::null::<fuse_operations>())).release as *const _ as usize },
1368 152usize,
1369 concat!(
1370 "Offset of field: ",
1371 stringify!(fuse_operations),
1372 "::",
1373 stringify!(release)
1374 )
1375 );
1376 assert_eq!(
1377 unsafe { &(*(::std::ptr::null::<fuse_operations>())).fsync as *const _ as usize },
1378 160usize,
1379 concat!(
1380 "Offset of field: ",
1381 stringify!(fuse_operations),
1382 "::",
1383 stringify!(fsync)
1384 )
1385 );
1386 assert_eq!(
1387 unsafe { &(*(::std::ptr::null::<fuse_operations>())).setxattr as *const _ as usize },
1388 168usize,
1389 concat!(
1390 "Offset of field: ",
1391 stringify!(fuse_operations),
1392 "::",
1393 stringify!(setxattr)
1394 )
1395 );
1396 assert_eq!(
1397 unsafe { &(*(::std::ptr::null::<fuse_operations>())).getxattr as *const _ as usize },
1398 176usize,
1399 concat!(
1400 "Offset of field: ",
1401 stringify!(fuse_operations),
1402 "::",
1403 stringify!(getxattr)
1404 )
1405 );
1406 assert_eq!(
1407 unsafe { &(*(::std::ptr::null::<fuse_operations>())).listxattr as *const _ as usize },
1408 184usize,
1409 concat!(
1410 "Offset of field: ",
1411 stringify!(fuse_operations),
1412 "::",
1413 stringify!(listxattr)
1414 )
1415 );
1416 assert_eq!(
1417 unsafe { &(*(::std::ptr::null::<fuse_operations>())).removexattr as *const _ as usize },
1418 192usize,
1419 concat!(
1420 "Offset of field: ",
1421 stringify!(fuse_operations),
1422 "::",
1423 stringify!(removexattr)
1424 )
1425 );
1426 assert_eq!(
1427 unsafe { &(*(::std::ptr::null::<fuse_operations>())).opendir as *const _ as usize },
1428 200usize,
1429 concat!(
1430 "Offset of field: ",
1431 stringify!(fuse_operations),
1432 "::",
1433 stringify!(opendir)
1434 )
1435 );
1436 assert_eq!(
1437 unsafe { &(*(::std::ptr::null::<fuse_operations>())).readdir as *const _ as usize },
1438 208usize,
1439 concat!(
1440 "Offset of field: ",
1441 stringify!(fuse_operations),
1442 "::",
1443 stringify!(readdir)
1444 )
1445 );
1446 assert_eq!(
1447 unsafe { &(*(::std::ptr::null::<fuse_operations>())).releasedir as *const _ as usize },
1448 216usize,
1449 concat!(
1450 "Offset of field: ",
1451 stringify!(fuse_operations),
1452 "::",
1453 stringify!(releasedir)
1454 )
1455 );
1456 assert_eq!(
1457 unsafe { &(*(::std::ptr::null::<fuse_operations>())).fsyncdir as *const _ as usize },
1458 224usize,
1459 concat!(
1460 "Offset of field: ",
1461 stringify!(fuse_operations),
1462 "::",
1463 stringify!(fsyncdir)
1464 )
1465 );
1466 assert_eq!(
1467 unsafe { &(*(::std::ptr::null::<fuse_operations>())).init as *const _ as usize },
1468 232usize,
1469 concat!(
1470 "Offset of field: ",
1471 stringify!(fuse_operations),
1472 "::",
1473 stringify!(init)
1474 )
1475 );
1476 assert_eq!(
1477 unsafe { &(*(::std::ptr::null::<fuse_operations>())).destroy as *const _ as usize },
1478 240usize,
1479 concat!(
1480 "Offset of field: ",
1481 stringify!(fuse_operations),
1482 "::",
1483 stringify!(destroy)
1484 )
1485 );
1486 assert_eq!(
1487 unsafe { &(*(::std::ptr::null::<fuse_operations>())).access as *const _ as usize },
1488 248usize,
1489 concat!(
1490 "Offset of field: ",
1491 stringify!(fuse_operations),
1492 "::",
1493 stringify!(access)
1494 )
1495 );
1496 assert_eq!(
1497 unsafe { &(*(::std::ptr::null::<fuse_operations>())).create as *const _ as usize },
1498 256usize,
1499 concat!(
1500 "Offset of field: ",
1501 stringify!(fuse_operations),
1502 "::",
1503 stringify!(create)
1504 )
1505 );
1506 assert_eq!(
1507 unsafe { &(*(::std::ptr::null::<fuse_operations>())).ftruncate as *const _ as usize },
1508 264usize,
1509 concat!(
1510 "Offset of field: ",
1511 stringify!(fuse_operations),
1512 "::",
1513 stringify!(ftruncate)
1514 )
1515 );
1516 assert_eq!(
1517 unsafe { &(*(::std::ptr::null::<fuse_operations>())).fgetattr as *const _ as usize },
1518 272usize,
1519 concat!(
1520 "Offset of field: ",
1521 stringify!(fuse_operations),
1522 "::",
1523 stringify!(fgetattr)
1524 )
1525 );
1526 assert_eq!(
1527 unsafe { &(*(::std::ptr::null::<fuse_operations>())).lock as *const _ as usize },
1528 280usize,
1529 concat!(
1530 "Offset of field: ",
1531 stringify!(fuse_operations),
1532 "::",
1533 stringify!(lock)
1534 )
1535 );
1536 assert_eq!(
1537 unsafe { &(*(::std::ptr::null::<fuse_operations>())).utimens as *const _ as usize },
1538 288usize,
1539 concat!(
1540 "Offset of field: ",
1541 stringify!(fuse_operations),
1542 "::",
1543 stringify!(utimens)
1544 )
1545 );
1546 assert_eq!(
1547 unsafe { &(*(::std::ptr::null::<fuse_operations>())).bmap as *const _ as usize },
1548 296usize,
1549 concat!(
1550 "Offset of field: ",
1551 stringify!(fuse_operations),
1552 "::",
1553 stringify!(bmap)
1554 )
1555 );
1556 assert_eq!(
1557 unsafe { &(*(::std::ptr::null::<fuse_operations>())).reserved00 as *const _ as usize },
1558 304usize,
1559 concat!(
1560 "Offset of field: ",
1561 stringify!(fuse_operations),
1562 "::",
1563 stringify!(reserved00)
1564 )
1565 );
1566 assert_eq!(
1567 unsafe { &(*(::std::ptr::null::<fuse_operations>())).reserved01 as *const _ as usize },
1568 312usize,
1569 concat!(
1570 "Offset of field: ",
1571 stringify!(fuse_operations),
1572 "::",
1573 stringify!(reserved01)
1574 )
1575 );
1576 assert_eq!(
1577 unsafe { &(*(::std::ptr::null::<fuse_operations>())).reserved02 as *const _ as usize },
1578 320usize,
1579 concat!(
1580 "Offset of field: ",
1581 stringify!(fuse_operations),
1582 "::",
1583 stringify!(reserved02)
1584 )
1585 );
1586 assert_eq!(
1587 unsafe { &(*(::std::ptr::null::<fuse_operations>())).reserved03 as *const _ as usize },
1588 328usize,
1589 concat!(
1590 "Offset of field: ",
1591 stringify!(fuse_operations),
1592 "::",
1593 stringify!(reserved03)
1594 )
1595 );
1596 assert_eq!(
1597 unsafe { &(*(::std::ptr::null::<fuse_operations>())).reserved04 as *const _ as usize },
1598 336usize,
1599 concat!(
1600 "Offset of field: ",
1601 stringify!(fuse_operations),
1602 "::",
1603 stringify!(reserved04)
1604 )
1605 );
1606 assert_eq!(
1607 unsafe { &(*(::std::ptr::null::<fuse_operations>())).reserved05 as *const _ as usize },
1608 344usize,
1609 concat!(
1610 "Offset of field: ",
1611 stringify!(fuse_operations),
1612 "::",
1613 stringify!(reserved05)
1614 )
1615 );
1616 assert_eq!(
1617 unsafe { &(*(::std::ptr::null::<fuse_operations>())).reserved06 as *const _ as usize },
1618 352usize,
1619 concat!(
1620 "Offset of field: ",
1621 stringify!(fuse_operations),
1622 "::",
1623 stringify!(reserved06)
1624 )
1625 );
1626 assert_eq!(
1627 unsafe { &(*(::std::ptr::null::<fuse_operations>())).reserved07 as *const _ as usize },
1628 360usize,
1629 concat!(
1630 "Offset of field: ",
1631 stringify!(fuse_operations),
1632 "::",
1633 stringify!(reserved07)
1634 )
1635 );
1636 assert_eq!(
1637 unsafe { &(*(::std::ptr::null::<fuse_operations>())).reserved08 as *const _ as usize },
1638 368usize,
1639 concat!(
1640 "Offset of field: ",
1641 stringify!(fuse_operations),
1642 "::",
1643 stringify!(reserved08)
1644 )
1645 );
1646 assert_eq!(
1647 unsafe { &(*(::std::ptr::null::<fuse_operations>())).reserved09 as *const _ as usize },
1648 376usize,
1649 concat!(
1650 "Offset of field: ",
1651 stringify!(fuse_operations),
1652 "::",
1653 stringify!(reserved09)
1654 )
1655 );
1656 assert_eq!(
1657 unsafe { &(*(::std::ptr::null::<fuse_operations>())).reserved10 as *const _ as usize },
1658 384usize,
1659 concat!(
1660 "Offset of field: ",
1661 stringify!(fuse_operations),
1662 "::",
1663 stringify!(reserved10)
1664 )
1665 );
1666 assert_eq!(
1667 unsafe { &(*(::std::ptr::null::<fuse_operations>())).setvolname as *const _ as usize },
1668 392usize,
1669 concat!(
1670 "Offset of field: ",
1671 stringify!(fuse_operations),
1672 "::",
1673 stringify!(setvolname)
1674 )
1675 );
1676 assert_eq!(
1677 unsafe { &(*(::std::ptr::null::<fuse_operations>())).exchange as *const _ as usize },
1678 400usize,
1679 concat!(
1680 "Offset of field: ",
1681 stringify!(fuse_operations),
1682 "::",
1683 stringify!(exchange)
1684 )
1685 );
1686 assert_eq!(
1687 unsafe { &(*(::std::ptr::null::<fuse_operations>())).getxtimes as *const _ as usize },
1688 408usize,
1689 concat!(
1690 "Offset of field: ",
1691 stringify!(fuse_operations),
1692 "::",
1693 stringify!(getxtimes)
1694 )
1695 );
1696 assert_eq!(
1697 unsafe { &(*(::std::ptr::null::<fuse_operations>())).setbkuptime as *const _ as usize },
1698 416usize,
1699 concat!(
1700 "Offset of field: ",
1701 stringify!(fuse_operations),
1702 "::",
1703 stringify!(setbkuptime)
1704 )
1705 );
1706 assert_eq!(
1707 unsafe { &(*(::std::ptr::null::<fuse_operations>())).setchgtime as *const _ as usize },
1708 424usize,
1709 concat!(
1710 "Offset of field: ",
1711 stringify!(fuse_operations),
1712 "::",
1713 stringify!(setchgtime)
1714 )
1715 );
1716 assert_eq!(
1717 unsafe { &(*(::std::ptr::null::<fuse_operations>())).setcrtime as *const _ as usize },
1718 432usize,
1719 concat!(
1720 "Offset of field: ",
1721 stringify!(fuse_operations),
1722 "::",
1723 stringify!(setcrtime)
1724 )
1725 );
1726 assert_eq!(
1727 unsafe { &(*(::std::ptr::null::<fuse_operations>())).chflags as *const _ as usize },
1728 440usize,
1729 concat!(
1730 "Offset of field: ",
1731 stringify!(fuse_operations),
1732 "::",
1733 stringify!(chflags)
1734 )
1735 );
1736 assert_eq!(
1737 unsafe { &(*(::std::ptr::null::<fuse_operations>())).setattr_x as *const _ as usize },
1738 448usize,
1739 concat!(
1740 "Offset of field: ",
1741 stringify!(fuse_operations),
1742 "::",
1743 stringify!(setattr_x)
1744 )
1745 );
1746 assert_eq!(
1747 unsafe { &(*(::std::ptr::null::<fuse_operations>())).fsetattr_x as *const _ as usize },
1748 456usize,
1749 concat!(
1750 "Offset of field: ",
1751 stringify!(fuse_operations),
1752 "::",
1753 stringify!(fsetattr_x)
1754 )
1755 );
1756}