* Add missing fuse_session_data to versionscript
[fuse.git] / lib / fuse_i.h
blob7b991255fe5bae48b7009c8ed0d257f0592f0af9
1 /*
2 FUSE: Filesystem in Userspace
3 Copyright (C) 2001-2007 Miklos Szeredi <miklos@szeredi.hu>
5 This program can be distributed under the terms of the GNU LGPLv2.
6 See the file COPYING.LIB
7 */
9 #include "fuse.h"
10 #include "fuse_lowlevel.h"
12 struct fuse_chan;
13 struct fuse_ll;
15 struct fuse_session {
16 struct fuse_session_ops op;
18 void *data;
20 volatile int exited;
22 struct fuse_chan *ch;
25 struct fuse_req {
26 struct fuse_ll *f;
27 uint64_t unique;
28 int ctr;
29 pthread_mutex_t lock;
30 struct fuse_ctx ctx;
31 struct fuse_chan *ch;
32 int interrupted;
33 union {
34 struct {
35 uint64_t unique;
36 } i;
37 struct {
38 fuse_interrupt_func_t func;
39 void *data;
40 } ni;
41 } u;
42 struct fuse_req *next;
43 struct fuse_req *prev;
46 struct fuse_ll {
47 int debug;
48 int allow_root;
49 int atomic_o_trunc;
50 int no_remote_lock;
51 int big_writes;
52 struct fuse_lowlevel_ops op;
53 int got_init;
54 struct cuse_data *cuse_data;
55 void *userdata;
56 uid_t owner;
57 struct fuse_conn_info conn;
58 struct fuse_req list;
59 struct fuse_req interrupts;
60 pthread_mutex_t lock;
61 int got_destroy;
64 struct fuse_cmd {
65 char *buf;
66 size_t buflen;
67 struct fuse_chan *ch;
70 struct fuse *fuse_new_common(struct fuse_chan *ch, struct fuse_args *args,
71 const struct fuse_operations *op,
72 size_t op_size, void *user_data, int compat);
74 int fuse_sync_compat_args(struct fuse_args *args);
76 struct fuse_chan *fuse_kern_chan_new(int fd);
78 struct fuse_session *fuse_lowlevel_new_common(struct fuse_args *args,
79 const struct fuse_lowlevel_ops *op,
80 size_t op_size, void *userdata);
82 void fuse_kern_unmount_compat22(const char *mountpoint);
83 void fuse_kern_unmount(const char *mountpoint, int fd);
84 int fuse_kern_mount(const char *mountpoint, struct fuse_args *args);
86 int fuse_send_reply_iov_nofree(fuse_req_t req, int error, struct iovec *iov,
87 int count);
88 void fuse_free_req(fuse_req_t req);
91 struct fuse *fuse_setup_common(int argc, char *argv[],
92 const struct fuse_operations *op,
93 size_t op_size,
94 char **mountpoint,
95 int *multithreaded,
96 int *fd,
97 void *user_data,
98 int compat);
100 void cuse_lowlevel_init(fuse_req_t req, fuse_ino_t nodeide, const void *inarg);