13#include "fuse_lowlevel.h"
34 struct fuse_session *se;
42 unsigned int ioctl_64bit : 1;
43 unsigned int is_uring : 1;
44 unsigned int is_copy_file_range_64 : 1;
55 struct fuse_req *next;
56 struct fuse_req *prev;
59struct fuse_notify_req {
62 const void *,
const struct fuse_buf *);
63 struct fuse_notify_req *next;
64 struct fuse_notify_req *prev;
67struct fuse_session_uring {
74 _Atomic(
char *)mountpoint;
76 struct fuse_custom_io *io;
77 struct mount_opts *mo;
82 struct cuse_data *cuse_data;
87 struct fuse_req interrupts;
90 pthread_key_t pipe_key;
91 int broken_splice_nonblock;
93 struct fuse_notify_req notify_list;
94 _Atomic
size_t bufsize;
104 _Atomic
bool mt_exited;
105 pthread_mutex_t mt_lock;
109 bool buf_reallocable;
112 struct fuse_session_uring uring;
119 uint64_t conn_want_ext;
123 pthread_mutex_t lock;
139 struct fusemod_so *so;
151#if FUSE_USE_VERSION >= FUSE_MAKE_VERSION(3, 12)
204struct fuse_chan *fuse_chan_get(
struct fuse_chan *ch);
211void fuse_chan_put(
struct fuse_chan *ch);
213struct mount_opts *parse_mount_opts(
struct fuse_args *args);
214void destroy_mount_opts(
struct mount_opts *mo);
215void fuse_mount_version(
void);
216unsigned get_max_read(
struct mount_opts *o);
217void fuse_kern_unmount(
const char *mountpoint,
int fd);
218int fuse_kern_mount(
const char *mountpoint,
struct mount_opts *mo);
220int fuse_send_reply_iov_nofree(
fuse_req_t req,
int error,
struct iovec *iov,
223void list_init_req(
struct fuse_req *req);
226 const void *req_header,
const void *req_payload);
229int fuse_start_thread(pthread_t *thread_id,
void *(*func)(
void *),
void *arg);
231void fuse_buf_free(
struct fuse_buf *buf);
233int fuse_session_receive_buf_internal(
struct fuse_session *se,
235 struct fuse_chan *ch);
236void fuse_session_process_buf_internal(
struct fuse_session *se,
238 struct fuse_chan *ch);
241 size_t op_size,
void *private_data);
243int fuse_session_loop_mt_312(
struct fuse_session *se,
struct fuse_loop_config *config);
259#define FUSE_DEFAULT_MAX_PAGES_LIMIT 256
260#define FUSE_DEFAULT_MAX_PAGES_PER_REQ 32
263#define FUSE_BUFFER_HEADER_SIZE 0x1000
struct fuse_fs *(* fuse_module_factory_t)(struct fuse_args *args, struct fuse_fs *fs[])
void(* fuse_interrupt_func_t)(fuse_req_t req, void *data)
struct fuse_req * fuse_req_t
unsigned int max_idle_threads