aboutsummaryrefslogtreecommitdiff
path: root/doc/mainpage.dox
blob: dc64868d5a621de9c9b74031b0fa4ed9c1d2ae5c (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.


## 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.

## 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).


*/