yarf_sys/
lib.rs

1/*
2 * A libfuse highlevel API Rust bindings.
3 * It supports only libfuse 2.6.x+
4 *
5 */
6extern 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    // TODO pub enable: fuse_conn_info__bindgen_ty_1,
119    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}