"Fossies" - the Fresh Open Source Software Archive
Member "fuse-3.2.3/doc/mainpage.dox" (11 May 2018, 2151 Bytes) of package /linux/misc/fuse-3.2.3.tar.xz:
As a special service "Fossies" has tried to format the requested text file into HTML format (style: standard
) with prefixed line numbers.
Alternatively you can here view
the uninterpreted source code file.
For more information about "mainpage.dox" see the Fossies "Dox" file reference
documentation and the last Fossies "Diffs"
side-by-side code changes report: 3.2.0_vs_3.2.1
2 \mainpage libfuse API documentation
4 FUSE (Filesystem in Userspace) is an interface for userspace programs
5 to export a filesystem to the Linux kernel. The FUSE project consists
6 of two components: the *fuse* kernel module (maintained in the regular
7 kernel repositories) and the *libfuse* userspace library. libfuse
8 provides the reference implementation for communicating with the FUSE
9 kernel module.
11 A FUSE file system is typically implemented as a standalone
12 application that links with libfuse. libfuse provides functions to
13 mount the file system, unmount it, read requests from the kernel, and
14 send responses back.
17 ## Getting started ##
19 libfuse offers two APIs: a "high-level", synchronous API, and a
20 "low-level" asynchronous API. In both cases, incoming requests from
21 the kernel are passed to the main program using callbacks. When using
22 the high-level API, the callbacks may work with file names and paths
23 instead of inodes, and processing of a request finishes when the
24 callback function returns. When using the low-level API, the callbacks
25 must work with inodes and responses must be sent explicitly using a
26 separate set of API functions.
28 The high-level API that is primarily specified in fuse.h. The
29 low-level API that is primarily documented in fuse_lowlevel.h.
31 ## Examples ##
33 FUSE comes with several examples in the <a
34 href="files.html">examples</a> directory. A good starting point are
35 hello.c (for the high-level API) and hello_ll.c (for the low-level
38 ## FUSE internals ##
40 The authoritative source of information about libfuse internals
41 (including the protocol used for communication with the FUSE kernel
42 module) is the source code.
44 However, some people have kindly documented different aspects of FUSE
45 in a more beginner friendly way. While this information is
46 increasingly out of date, it still provides a good overview:
48 - Bharat Vangoor et al have included an overview of the FUSE internals
49 in a <a href="fast17-vangoor.pdf">paper evaluating FUSE performance</a>.
51 - Some documentation of the kernel-userspace protocol is available on
52 the <a href="https://github.com/libfuse/libfuse/wiki/">libfuse wiki</a>.