"Fossies" - the Fresh Open Source Software Archive

Member "fuse-3.5.0/doc/html/fuse_8h_source.html" (16 Apr 2019, 99246 Bytes) of package /linux/misc/fuse-3.5.0.tar.xz:


Caution: In this restricted "Fossies" environment the current HTML page may not be correctly presentated and may have some non-functional links. You can here alternatively try to browse the pure source code or just view or download the uninterpreted raw source code. If the rendering is insufficient you may try to find and view the page on the FUSE project site itself.

libfuse
fuse.h
Go to the documentation of this file.
1 /*
2  FUSE: Filesystem in Userspace
3  Copyright (C) 2001-2007 Miklos Szeredi <miklos@szeredi.hu>
4 
5  This program can be distributed under the terms of the GNU LGPLv2.
6  See the file COPYING.LIB.
7 */
8 
9 #ifndef FUSE_H_
10 #define FUSE_H_
11 
19 #include "fuse_common.h"
20 
21 #include <fcntl.h>
22 #include <time.h>
23 #include <sys/types.h>
24 #include <sys/stat.h>
25 #include <sys/statvfs.h>
26 #include <sys/uio.h>
27 
28 #ifdef __cplusplus
29 extern "C" {
30 #endif
31 
32 /* ----------------------------------------------------------- *
33  * Basic FUSE API *
34  * ----------------------------------------------------------- */
35 
37 struct fuse;
38 
51  FUSE_READDIR_PLUS = (1 << 0),
52 };
53 
64  FUSE_FILL_DIR_PLUS = (1 << 1),
65 };
66 
82 typedef int (*fuse_fill_dir_t) (void *buf, const char *name,
83  const struct stat *stbuf, off_t off,
84  enum fuse_fill_dir_flags flags);
93 struct fuse_config {
98  int set_gid;
99  unsigned int gid;
100 
105  int set_uid;
106  unsigned int uid;
107 
112  int set_mode;
113  unsigned int umask;
114 
120 
130 
135  double attr_timeout;
136 
140  int intr;
141 
148 
159  int remember;
160 
178 
190  int use_ino;
191 
200 
219 
238 
246 
253  double ac_attr_timeout;
254 
266 
272  char *modules;
273  int debug;
274 };
275 
276 
311  int (*getattr) (const char *, struct stat *, struct fuse_file_info *fi);
312 
321  int (*readlink) (const char *, char *, size_t);
322 
329  int (*mknod) (const char *, mode_t, dev_t);
330 
337  int (*mkdir) (const char *, mode_t);
338 
340  int (*unlink) (const char *);
341 
343  int (*rmdir) (const char *);
344 
346  int (*symlink) (const char *, const char *);
347 
357  int (*rename) (const char *, const char *, unsigned int flags);
358 
360  int (*link) (const char *, const char *);
361 
367  int (*chmod) (const char *, mode_t, struct fuse_file_info *fi);
368 
377  int (*chown) (const char *, uid_t, gid_t, struct fuse_file_info *fi);
378 
387  int (*truncate) (const char *, off_t, struct fuse_file_info *fi);
388 
436  int (*open) (const char *, struct fuse_file_info *);
437 
447  int (*read) (const char *, char *, size_t, off_t,
448  struct fuse_file_info *);
449 
459  int (*write) (const char *, const char *, size_t, off_t,
460  struct fuse_file_info *);
461 
466  int (*statfs) (const char *, struct statvfs *);
467 
496  int (*flush) (const char *, struct fuse_file_info *);
497 
510  int (*release) (const char *, struct fuse_file_info *);
511 
517  int (*fsync) (const char *, int, struct fuse_file_info *);
518 
520  int (*setxattr) (const char *, const char *, const char *, size_t, int);
521 
523  int (*getxattr) (const char *, const char *, char *, size_t);
524 
526  int (*listxattr) (const char *, char *, size_t);
527 
529  int (*removexattr) (const char *, const char *);
530 
539  int (*opendir) (const char *, struct fuse_file_info *);
540 
556  int (*readdir) (const char *, void *, fuse_fill_dir_t, off_t,
557  struct fuse_file_info *, enum fuse_readdir_flags);
558 
561  int (*releasedir) (const char *, struct fuse_file_info *);
562 
568  int (*fsyncdir) (const char *, int, struct fuse_file_info *);
569 
578  void *(*init) (struct fuse_conn_info *conn,
579  struct fuse_config *cfg);
580 
586  void (*destroy) (void *private_data);
587 
597  int (*access) (const char *, int);
598 
609  int (*create) (const char *, mode_t, struct fuse_file_info *);
610 
641  int (*lock) (const char *, struct fuse_file_info *, int cmd,
642  struct flock *);
643 
656  int (*utimens) (const char *, const struct timespec tv[2],
657  struct fuse_file_info *fi);
658 
665  int (*bmap) (const char *, size_t blocksize, uint64_t *idx);
666 
683  int (*ioctl) (const char *, unsigned int cmd, void *arg,
684  struct fuse_file_info *, unsigned int flags, void *data);
685 
701  int (*poll) (const char *, struct fuse_file_info *,
702  struct fuse_pollhandle *ph, unsigned *reventsp);
703 
713  int (*write_buf) (const char *, struct fuse_bufvec *buf, off_t off,
714  struct fuse_file_info *);
715 
730  int (*read_buf) (const char *, struct fuse_bufvec **bufp,
731  size_t size, off_t off, struct fuse_file_info *);
750  int (*flock) (const char *, struct fuse_file_info *, int op);
751 
760  int (*fallocate) (const char *, int, off_t, off_t,
761  struct fuse_file_info *);
762 
774  ssize_t (*copy_file_range) (const char *path_in,
775  struct fuse_file_info *fi_in,
776  off_t offset_in, const char *path_out,
777  struct fuse_file_info *fi_out,
778  off_t offset_out, size_t size, int flags);
779 };
780 
786 struct fuse_context {
788  struct fuse *fuse;
789 
791  uid_t uid;
792 
794  gid_t gid;
795 
797  pid_t pid;
798 
801 
803  mode_t umask;
804 };
805 
860 /*
861  int fuse_main(int argc, char *argv[], const struct fuse_operations *op,
862  void *private_data);
863 */
864 #define fuse_main(argc, argv, op, private_data) \
865  fuse_main_real(argc, argv, op, sizeof(*(op)), private_data)
866 
867 /* ----------------------------------------------------------- *
868  * More detailed API *
869  * ----------------------------------------------------------- */
870 
882 void fuse_lib_help(struct fuse_args *args);
883 
911 #if FUSE_USE_VERSION == 30
912 struct fuse *fuse_new_30(struct fuse_args *args, const struct fuse_operations *op,
913  size_t op_size, void *private_data);
914 #define fuse_new(args, op, size, data) fuse_new_30(args, op, size, data)
915 #else
916 struct fuse *fuse_new(struct fuse_args *args, const struct fuse_operations *op,
917  size_t op_size, void *private_data);
918 #endif
919 
928 int fuse_mount(struct fuse *f, const char *mountpoint);
929 
937 void fuse_unmount(struct fuse *f);
938 
947 void fuse_destroy(struct fuse *f);
948 
964 int fuse_loop(struct fuse *f);
965 
974 void fuse_exit(struct fuse *f);
975 
1007 #if FUSE_USE_VERSION < 32
1008 int fuse_loop_mt_31(struct fuse *f, int clone_fd);
1009 #define fuse_loop_mt(f, clone_fd) fuse_loop_mt_31(f, clone_fd)
1010 #else
1011 int fuse_loop_mt(struct fuse *f, struct fuse_loop_config *config);
1012 #endif
1013 
1022 struct fuse_context *fuse_get_context(void);
1023 
1042 int fuse_getgroups(int size, gid_t list[]);
1043 
1049 int fuse_interrupted(void);
1050 
1062 int fuse_invalidate_path(struct fuse *f, const char *path);
1063 
1069 int fuse_main_real(int argc, char *argv[], const struct fuse_operations *op,
1070  size_t op_size, void *private_data);
1071 
1079 int fuse_start_cleanup_thread(struct fuse *fuse);
1080 
1087 void fuse_stop_cleanup_thread(struct fuse *fuse);
1088 
1098 int fuse_clean_cache(struct fuse *fuse);
1099 
1100 /*
1101  * Stacking API
1102  */
1103 
1109 struct fuse_fs;
1110 
1111 /*
1112  * These functions call the relevant filesystem operation, and return
1113  * the result.
1114  *
1115  * If the operation is not defined, they return -ENOSYS, with the
1116  * exception of fuse_fs_open, fuse_fs_release, fuse_fs_opendir,
1117  * fuse_fs_releasedir and fuse_fs_statfs, which return 0.
1118  */
1119 
1120 int fuse_fs_getattr(struct fuse_fs *fs, const char *path, struct stat *buf,
1121  struct fuse_file_info *fi);
1122 int fuse_fs_rename(struct fuse_fs *fs, const char *oldpath,
1123  const char *newpath, unsigned int flags);
1124 int fuse_fs_unlink(struct fuse_fs *fs, const char *path);
1125 int fuse_fs_rmdir(struct fuse_fs *fs, const char *path);
1126 int fuse_fs_symlink(struct fuse_fs *fs, const char *linkname,
1127  const char *path);
1128 int fuse_fs_link(struct fuse_fs *fs, const char *oldpath, const char *newpath);
1129 int fuse_fs_release(struct fuse_fs *fs, const char *path,
1130  struct fuse_file_info *fi);
1131 int fuse_fs_open(struct fuse_fs *fs, const char *path,
1132  struct fuse_file_info *fi);
1133 int fuse_fs_read(struct fuse_fs *fs, const char *path, char *buf, size_t size,
1134  off_t off, struct fuse_file_info *fi);
1135 int fuse_fs_read_buf(struct fuse_fs *fs, const char *path,
1136  struct fuse_bufvec **bufp, size_t size, off_t off,
1137  struct fuse_file_info *fi);
1138 int fuse_fs_write(struct fuse_fs *fs, const char *path, const char *buf,
1139  size_t size, off_t off, struct fuse_file_info *fi);
1140 int fuse_fs_write_buf(struct fuse_fs *fs, const char *path,
1141  struct fuse_bufvec *buf, off_t off,
1142  struct fuse_file_info *fi);
1143 int fuse_fs_fsync(struct fuse_fs *fs, const char *path, int datasync,
1144  struct fuse_file_info *fi);
1145 int fuse_fs_flush(struct fuse_fs *fs, const char *path,
1146  struct fuse_file_info *fi);
1147 int fuse_fs_statfs(struct fuse_fs *fs, const char *path, struct statvfs *buf);
1148 int fuse_fs_opendir(struct fuse_fs *fs, const char *path,
1149  struct fuse_file_info *fi);
1150 int fuse_fs_readdir(struct fuse_fs *fs, const char *path, void *buf,
1151  fuse_fill_dir_t filler, off_t off,
1152  struct fuse_file_info *fi, enum fuse_readdir_flags flags);
1153 int fuse_fs_fsyncdir(struct fuse_fs *fs, const char *path, int datasync,
1154  struct fuse_file_info *fi);
1155 int fuse_fs_releasedir(struct fuse_fs *fs, const char *path,
1156  struct fuse_file_info *fi);
1157 int fuse_fs_create(struct fuse_fs *fs, const char *path, mode_t mode,
1158  struct fuse_file_info *fi);
1159 int fuse_fs_lock(struct fuse_fs *fs, const char *path,
1160  struct fuse_file_info *fi, int cmd, struct flock *lock);
1161 int fuse_fs_flock(struct fuse_fs *fs, const char *path,
1162  struct fuse_file_info *fi, int op);
1163 int fuse_fs_chmod(struct fuse_fs *fs, const char *path, mode_t mode,
1164  struct fuse_file_info *fi);
1165 int fuse_fs_chown(struct fuse_fs *fs, const char *path, uid_t uid, gid_t gid,
1166  struct fuse_file_info *fi);
1167 int fuse_fs_truncate(struct fuse_fs *fs, const char *path, off_t size,
1168  struct fuse_file_info *fi);
1169 int fuse_fs_utimens(struct fuse_fs *fs, const char *path,
1170  const struct timespec tv[2], struct fuse_file_info *fi);
1171 int fuse_fs_access(struct fuse_fs *fs, const char *path, int mask);
1172 int fuse_fs_readlink(struct fuse_fs *fs, const char *path, char *buf,
1173  size_t len);
1174 int fuse_fs_mknod(struct fuse_fs *fs, const char *path, mode_t mode,
1175  dev_t rdev);
1176 int fuse_fs_mkdir(struct fuse_fs *fs, const char *path, mode_t mode);
1177 int fuse_fs_setxattr(struct fuse_fs *fs, const char *path, const char *name,
1178  const char *value, size_t size, int flags);
1179 int fuse_fs_getxattr(struct fuse_fs *fs, const char *path, const char *name,
1180  char *value, size_t size);
1181 int fuse_fs_listxattr(struct fuse_fs *fs, const char *path, char *list,
1182  size_t size);
1183 int fuse_fs_removexattr(struct fuse_fs *fs, const char *path,
1184  const char *name);
1185 int fuse_fs_bmap(struct fuse_fs *fs, const char *path, size_t blocksize,
1186  uint64_t *idx);
1187 int fuse_fs_ioctl(struct fuse_fs *fs, const char *path, unsigned int cmd,
1188  void *arg, struct fuse_file_info *fi, unsigned int flags,
1189  void *data);
1190 int fuse_fs_poll(struct fuse_fs *fs, const char *path,
1191  struct fuse_file_info *fi, struct fuse_pollhandle *ph,
1192  unsigned *reventsp);
1193 int fuse_fs_fallocate(struct fuse_fs *fs, const char *path, int mode,
1194  off_t offset, off_t length, struct fuse_file_info *fi);
1195 ssize_t fuse_fs_copy_file_range(struct fuse_fs *fs, const char *path_in,
1196  struct fuse_file_info *fi_in, off_t off_in,
1197  const char *path_out,
1198  struct fuse_file_info *fi_out, off_t off_out,
1199  size_t len, int flags);
1200 void fuse_fs_init(struct fuse_fs *fs, struct fuse_conn_info *conn,
1201  struct fuse_config *cfg);
1202 void fuse_fs_destroy(struct fuse_fs *fs);
1203 
1204 int fuse_notify_poll(struct fuse_pollhandle *ph);
1205 
1219 struct fuse_fs *fuse_fs_new(const struct fuse_operations *op, size_t op_size,
1220  void *private_data);
1221 
1236 typedef struct fuse_fs *(*fuse_module_factory_t)(struct fuse_args *args,
1237  struct fuse_fs *fs[]);
1248 #define FUSE_REGISTER_MODULE(name_, factory_) \
1249  fuse_module_factory_t fuse_module_ ## name_ ## _factory = factory_
1250 
1252 struct fuse_session *fuse_get_session(struct fuse *f);
1253 
1262 int fuse_open_channel(const char *mountpoint, const char *options);
1263 
1264 #ifdef __cplusplus
1265 }
1266 #endif
1267 
1268 #endif /* FUSE_H_ */
size_t off
Definition: fuse_common.h:710
int auto_cache
Definition: fuse.h:245
void fuse_stop_cleanup_thread(struct fuse *fuse)
Definition: fuse.c:4818
int set_gid
Definition: fuse.h:98
int fuse_loop(struct fuse *f)
Definition: fuse.c:4517
struct fuse * fuse_new(struct fuse_args *args, const struct fuse_operations *op, size_t op_size, void *private_data)
fuse_fill_dir_flags
Definition: fuse.h:54
int readdir_ino
Definition: fuse.h:199
int intr
Definition: fuse.h:140
int set_mode
Definition: fuse.h:112
fuse_readdir_flags
Definition: fuse.h:42
int nullpath_ok
Definition: fuse.h:265
double negative_timeout
Definition: fuse.h:129
pid_t pid
Definition: fuse.h:797
int fuse_clean_cache(struct fuse *fuse)
Definition: fuse.c:4374
void fuse_destroy(struct fuse *f)
Definition: fuse.c:5009
int set_uid
Definition: fuse.h:105
int remember
Definition: fuse.h:159
int use_ino
Definition: fuse.h:190
int fuse_open_channel(const char *mountpoint, const char *options)
Definition: helper.c:424
gid_t gid
Definition: fuse.h:794
struct fuse_session * fuse_get_session(struct fuse *f)
Definition: fuse.c:4460
mode_t umask
Definition: fuse.h:803
void * private_data
Definition: fuse.h:800
int fuse_main_real(int argc, char *argv[], const struct fuse_operations *op, size_t op_size, void *private_data)
Definition: helper.c:279
int fuse_invalidate_path(struct fuse *f, const char *path)
Definition: fuse.c:4587
double attr_timeout
Definition: fuse.h:135
struct fuse_fs * fuse_fs_new(const struct fuse_operations *op, size_t op_size, void *private_data)
Definition: fuse.c:4762
int direct_io
Definition: fuse.h:218
int fuse_start_cleanup_thread(struct fuse *fuse)
Definition: fuse.c:4810
void fuse_lib_help(struct fuse_args *args)
Definition: fuse.c:4652
int fuse_interrupted(void)
Definition: fuse.c:4577
int(* fuse_fill_dir_t)(void *buf, const char *name, const struct stat *stbuf, off_t off, enum fuse_fill_dir_flags flags)
Definition: fuse.h:82
int show_help
Definition: fuse.h:271
int fuse_getgroups(int size, gid_t list[])
Definition: fuse.c:4568
int fuse_mount(struct fuse *f, const char *mountpoint)
Definition: fuse.c:5059
uid_t uid
Definition: fuse.h:791
struct fuse * fuse
Definition: fuse.h:788
struct fuse_buf buf[1]
Definition: fuse_common.h:715
int ac_attr_timeout_set
Definition: fuse.h:252
void fuse_unmount(struct fuse *f)
Definition: fuse.c:5064
int fuse_loop_mt_31(struct fuse *f, int clone_fd)
Definition: fuse.c:4545
struct fuse_context * fuse_get_context(void)
Definition: fuse.c:4558
double entry_timeout
Definition: fuse.h:119
int kernel_cache
Definition: fuse.h:237
int intr_signal
Definition: fuse.h:147
int hard_remove
Definition: fuse.h:177
void fuse_exit(struct fuse *f)
Definition: fuse.c:4553