aboutsummaryrefslogtreecommitdiff
path: root/doc/mainpage.dox
blob: e40f3917f910f11cdda3a26cfb23e1e15e283a31 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
/*!
\mainpage libfuse API documentation

FUSE (Filesystem in Userspace) is an interface for userspace programs
to export a filesystem to the Linux kernel. The FUSE project consists
of two components: the *fuse* kernel module (maintained in the regular
kernel repositories) and the *libfuse* userspace library. libfuse
provides the reference implementation for communicating with the FUSE
kernel module.

A FUSE file system is typically implemented as a standalone
application that links with libfuse. libfuse provides functions to
mount the file system, unmount it, read requests from the kernel, and
send responses back.


\section Getting started

libfuse offers two APIs: a "high-level", synchronous API, and a
"low-level" asynchronous API. In both cases, incoming requests from
the kernel are passed to the main program using callbacks. When using
the high-level API, the callbacks may work with file names and paths
instead of inodes, and processing of a request finishes when the
callback function returns. When using the low-level API, the callbacks
must work with inodes and responses must be sent explicitly using a
separate set of API functions.

The high-level API that is primarily specified in fuse.h. The
low-level API that is primarily documented in fuse_lowlevel.h.

\section Examples

FUSE comes with several examples in the <a
href="files.html">examples</a> directory. A good starting point are
hello.c (for the high-level API) and hello_ll.c (for the low-level
API).


*/