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
10 #include "fuse_lowlevel.h"
16 struct fuse_session_ops op
;
18 int (*receive_buf
)(struct fuse_session
*se
, struct fuse_buf
*buf
,
19 struct fuse_chan
**chp
);
21 void (*process_buf
)(void *data
, const struct fuse_buf
*buf
,
22 struct fuse_chan
*ch
);
44 fuse_interrupt_func_t func
;
48 struct fuse_req
*next
;
49 struct fuse_req
*prev
;
52 struct fuse_notify_req
{
54 void (*reply
)(struct fuse_notify_req
*, fuse_req_t
, fuse_ino_t
,
55 const void *, const struct fuse_buf
*);
56 struct fuse_notify_req
*next
;
57 struct fuse_notify_req
*prev
;
69 struct fuse_lowlevel_ops op
;
71 struct cuse_data
*cuse_data
;
74 struct fuse_conn_info conn
;
76 struct fuse_req interrupts
;
79 pthread_key_t pipe_key
;
80 int broken_splice_nonblock
;
82 struct fuse_notify_req notify_list
;
91 struct fuse
*fuse_new_common(struct fuse_chan
*ch
, struct fuse_args
*args
,
92 const struct fuse_operations
*op
,
93 size_t op_size
, void *user_data
, int compat
);
95 int fuse_sync_compat_args(struct fuse_args
*args
);
97 struct fuse_chan
*fuse_kern_chan_new(int fd
);
99 struct fuse_session
*fuse_lowlevel_new_common(struct fuse_args
*args
,
100 const struct fuse_lowlevel_ops
*op
,
101 size_t op_size
, void *userdata
);
103 void fuse_kern_unmount_compat22(const char *mountpoint
);
104 void fuse_kern_unmount(const char *mountpoint
, int fd
);
105 int fuse_kern_mount(const char *mountpoint
, struct fuse_args
*args
);
107 int fuse_send_reply_iov_nofree(fuse_req_t req
, int error
, struct iovec
*iov
,
109 void fuse_free_req(fuse_req_t req
);
112 struct fuse
*fuse_setup_common(int argc
, char *argv
[],
113 const struct fuse_operations
*op
,
121 void cuse_lowlevel_init(fuse_req_t req
, fuse_ino_t nodeide
, const void *inarg
);