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