summaryrefslogtreecommitdiff
path: root/include/fuse_common.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/fuse_common.h')
-rw-r--r--include/fuse_common.h122
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