From 7983414b33b43e76fc9766067b27060772150dbf Mon Sep 17 00:00:00 2001 From: Nikolaus Rath Date: Fri, 28 Oct 2016 20:44:39 -0700 Subject: Clean-up doxygen documentation Fixes: #81. --- doc/mainpage.dox | 107 ++++++++++++++----------------------------------------- 1 file changed, 27 insertions(+), 80 deletions(-) (limited to 'doc/mainpage.dox') diff --git a/doc/mainpage.dox b/doc/mainpage.dox index 9b1801f..e40f391 100644 --- a/doc/mainpage.dox +++ b/doc/mainpage.dox @@ -1,92 +1,39 @@ /*! -\mainpage FUSE API documentation +\mainpage libfuse API documentation -Filesystem in Userspace (FUSE) is a loadable kernel module for Unix-like computer operating systems that lets non-privileged users create their own file systems without editing kernel code. This is achieved by running file system code in user space while the FUSE module provides only a "bridge" to the actual kernel interfaces. +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. -(c) Wikipedia +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. -@tableofcontents +\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 -\section section1 How FUSE works +FUSE comes with several examples in the examples directory. A good starting point are +hello.c (for the high-level API) and hello_ll.c (for the low-level +API). -@image html 490px-FUSE_structure.svg.png "Structural diagramm of Filesystem in Userspace from http://en.wikipedia.org/wiki/File:FUSE_structure.svg" -\include how-fuse-works - - - - -\section section2 Kernel - -\include kernel.txt - - - - - -\section section_examples examples - -have a look at the examples listed in the example directory, which can be found here: files.html. - -- @ref hello.c - minimal FUSE example featuring fuse_main usage - -- @ref hello_ll.c - FUSE: Filesystem in Userspace - -- @ref null.c - FUSE: Filesystem in Userspace - -- @ref cusexmp.c - CUSE example: Character device in Userspace - -- @ref fioc.c - FUSE fioc: FUSE ioctl example - -- @ref fioclient.c - FUSE fioclient: FUSE ioctl example client - -- @ref fsel.c - FUSE fsel: FUSE select example - -- @ref fselclient.c - FUSE fselclient: FUSE select example client - -- @ref fusexmp.c - FUSE: Filesystem in Userspace - -- @ref fusexmp_fh.c - FUSE: Filesystem in Userspace - - -\section section_links links - -http://sourceforge.net/apps/mediawiki/fuse/index.php?title=Main_Page - the fuse wiki - -http://en.wikipedia.org/wiki/Filesystem_in_Userspace - FUSE on wikipedia - - -\section section_todo todo - -general: - - - fuse_lowlevel.h, describe: - - a channel (or communication channel) is created by fuse_mount(..) - - a fuse session is associated with a channel and a signal handler and runs until the assigned signal handler - shuts the session down, see fuse_session_loop(se) and hello_ll.c - - - http://www.cs.nmsu.edu/~pfeiffer/fuse-tutorial/ - - - http://cinwell.wordpress.com/ - - - http://sourceforge.net/apps/mediawiki/fuse/index.php?title=FuseProtocolSketch - - - http://muratbuffalo.blogspot.de/2011/05/refuse-to-crash-with-re-fuse.html - -examples: - - demonstrate the effect of single vs multithreaded -> fuse_loop fuse_loop_mt - - - add comments and source form all existing examples - - - also add examples form here: http://sourceforge.net/apps/mediawiki/fuse/index.php?title=Main_Page#How_should_threads_be_startedx3f - - - add this new example: http://fuse.996288.n3.nabble.com/Create-multiple-filesystems-in-same-process-td9292.html - - \section section_thanks thanks - - Mark Glines, for his coments on fuse_loop() and fuse_loop_mt(). - - Wikipedia - copied the FUSE introduction from the Filesystem in userspace article. */ -- cgit v1.2.3