diff options
author | Pino Toscano <toscano.pino@tiscali.it> | 2013-03-23 14:21:25 +0100 |
---|---|---|
committer | Pino Toscano <toscano.pino@tiscali.it> | 2013-03-23 14:21:25 +0100 |
commit | 3f5e67633de9c07f99967edf00bf9a3efdc65f62 (patch) | |
tree | 04ad6945e67526a697fe70550843b167f85e07a6 /include/fuse_common.h | |
parent | aa1e153d4763f08774af6c5d8bb28769d5e77201 (diff) |
Synchronize headers, examples and version script with FUSE 2.6.5
Update the headers from FUSE 2.6.5, import the examples and update the version script.
This temporarly breaks compilation.
* configure.ac (AC_CONFIG_FILES): Add example-26/Makefile.
* example-26/.gitignore: New file.
* example-26/Makefile.am: Likewise.
* example-26/fusexmp.c: Likewise.
* example-26/fusexmp_fh.c: Likewise.
* example-26/hello.c: Likewise.
* example-26/hello_ll.c: Likewise.
* example-26/null.c: Likewise.
* include/Makefile.am (fuseinclude_HEADERS): Add fuse_common_compat.h.
* include/fuse.h: Update from FUSE 2.6.5.
* include/fuse_common.h: Likewise.
* include/fuse_compat.h: Likewise.
* include/fuse_opt.h: Likewise.
* include/fuse_common_compat.h: Import from FUSE 2.6.5.
* Update from FUSE 2.6.5.
Diffstat (limited to 'include/fuse_common.h')
-rw-r--r-- | include/fuse_common.h | 122 |
1 files changed, 117 insertions, 5 deletions
diff --git a/include/fuse_common.h b/include/fuse_common.h index 0f35ea62b..8dc7bc25a 100644 --- a/include/fuse_common.h +++ b/include/fuse_common.h @@ -20,7 +20,7 @@ #define FUSE_MAJOR_VERSION 2 /** Minor version of FUSE library interface */ -#define FUSE_MINOR_VERSION 5 +#define FUSE_MINOR_VERSION 6 #define FUSE_MAKE_VERSION(maj, min) ((maj) * 10 + (min)) #define FUSE_VERSION FUSE_MAKE_VERSION(FUSE_MAJOR_VERSION, FUSE_MINOR_VERSION) @@ -58,15 +58,65 @@ struct fuse_file_info { need not be invalidated. Introduced in version 2.4 */ unsigned int keep_cache : 1; + /** Indicates a flush operation. Set in flush operation, also + maybe set in highlevel lock operation and lowlevel release + operation. Introduced in version 2.6 */ + unsigned int flush : 1; + /** Padding. Do not use*/ - unsigned int padding : 30; + unsigned int padding : 29; /** File handle. May be filled in by filesystem in open(). Available in all other file operations */ uint64_t fh; + + /** Lock owner id. Available in locking operations and flush */ + uint64_t lock_owner; }; /** + * Connection information, passed to the ->init() method + * + * Some of the elements are read-write, these can be changed to + * indicate the value requested by the filesystem. The requested + * value must usually be smaller than the indicated value. + */ +struct fuse_conn_info { + /** + * Major version of the protocol (read-only) + */ + unsigned proto_major; + + /** + * Minor version of the protocol (read-only) + */ + unsigned proto_minor; + + /** + * Is asynchronous read supported (read-write) + */ + unsigned async_read; + + /** + * Maximum size of the write buffer + */ + unsigned max_write; + + /** + * Maximum readahead + */ + unsigned max_readahead; + + /** + * For future use. + */ + unsigned reserved[27]; +}; + +struct fuse_session; +struct fuse_chan; + +/** * Create a FUSE mountpoint * * Returns a control file descriptor suitable for passing to @@ -74,16 +124,17 @@ struct fuse_file_info { * * @param mountpoint the mount point path * @param args argument vector - * @return the control file descriptor on success, -1 on failure + * @return the communication channel on success, NULL on failure */ -int fuse_mount(const char *mountpoint, struct fuse_args *args); +struct fuse_chan *fuse_mount(const char *mountpoint, struct fuse_args *args); /** * Umount a FUSE mountpoint * * @param mountpoint the mount point path + * @param ch the communication channel */ -void fuse_unmount(const char *mountpoint); +void fuse_unmount(const char *mountpoint, struct fuse_chan *ch); /** * Parse common options @@ -110,6 +161,67 @@ int fuse_parse_cmdline(struct fuse_args *args, char **mountpoint, int *multithreaded, int *foreground); +int fuse_daemonize(int foreground); + +/* ----------------------------------------------------------- * + * Signal handling * + * ----------------------------------------------------------- */ + +/** + * Exit session on HUP, TERM and INT signals and ignore PIPE signal + * + * Stores session in a global variable. May only be called once per + * process until fuse_remove_signal_handlers() is called. + * + * @param se the session to exit + * @return 0 on success, -1 on failure + */ +int fuse_set_signal_handlers(struct fuse_session *se); + +/** + * Restore default signal handlers + * + * Resets global session. After this fuse_set_signal_handlers() may + * be called again. + * + * @param se the same session as given in fuse_set_signal_handlers() + */ +void fuse_remove_signal_handlers(struct fuse_session *se); + +/* ----------------------------------------------------------- * + * Compatibility stuff * + * ----------------------------------------------------------- */ + +#if FUSE_USE_VERSION < 26 +# ifdef __FreeBSD__ +# if FUSE_USE_VERSION < 25 +# error On FreeBSD API version 25 or greater must be used +# endif +# endif +# include "fuse_common_compat.h" +# undef FUSE_MINOR_VERSION +# undef fuse_main +# define fuse_unmount fuse_unmount_compat22 +# if FUSE_USE_VERSION == 25 +# define FUSE_MINOR_VERSION 5 +# define fuse_mount fuse_mount_compat25 +# elif FUSE_USE_VERSION == 24 || FUSE_USE_VERSION == 22 +# define FUSE_MINOR_VERSION 4 +# define fuse_mount fuse_mount_compat22 +# elif FUSE_USE_VERSION == 21 +# define FUSE_MINOR_VERSION 1 +# define fuse_mount fuse_mount_compat22 +# elif FUSE_USE_VERSION == 11 +# warning Compatibility with API version 11 is deprecated +# undef FUSE_MAJOR_VERSION +# define FUSE_MAJOR_VERSION 1 +# define FUSE_MINOR_VERSION 1 +# define fuse_mount fuse_mount_compat1 +# else +# error Compatibility with API version other than 21, 22, 24, 25 and 11 not supported +# endif +#endif + #ifdef __cplusplus } #endif |