• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1/*!
2\mainpage libfuse API documentation
3
4FUSE (Filesystem in Userspace) is an interface for userspace programs
5to export a filesystem to the Linux kernel. The FUSE project consists
6of two components: the *fuse* kernel module (maintained in the regular
7kernel repositories) and the *libfuse* userspace library. libfuse
8provides the reference implementation for communicating with the FUSE
9kernel module.
10
11A FUSE file system is typically implemented as a standalone
12application that links with libfuse. libfuse provides functions to
13mount the file system, unmount it, read requests from the kernel, and
14send responses back.
15
16
17## Getting started ##
18
19libfuse offers two APIs: a "high-level", synchronous API, and a
20"low-level" asynchronous API. In both cases, incoming requests from
21the kernel are passed to the main program using callbacks. When using
22the high-level API, the callbacks may work with file names and paths
23instead of inodes, and processing of a request finishes when the
24callback function returns. When using the low-level API, the callbacks
25must work with inodes and responses must be sent explicitly using a
26separate set of API functions.
27
28The high-level API that is primarily specified in fuse.h. The
29low-level API that is primarily documented in fuse_lowlevel.h.
30
31## Examples ##
32
33FUSE comes with several examples in the <a
34href="files.html">examples</a> directory. A good starting point are
35hello.c (for the high-level API) and hello_ll.c (for the low-level
36API).
37
38## FUSE internals ##
39
40The authoritative source of information about libfuse internals
41(including the protocol used for communication with the FUSE kernel
42module) is the source code.
43
44However, some people have kindly documented different aspects of FUSE
45in a more beginner friendly way. While this information is
46increasingly out of date, it still provides a good overview:
47
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>.
50
51- Some documentation of the kernel-userspace protocol is available on
52  the <a href="https://github.com/libfuse/libfuse/wiki/">libfuse wiki</a>.
53
54*/
55