fuse_i.h (2336B)
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_I_H 10#define FUSE_I_H 11 12#define FUSE_USE_VERSION 31 13#include "fuse_lowlevel.h" 14 15struct fv_VuDev; 16struct fv_QueueInfo; 17 18struct fuse_req { 19 struct fuse_session *se; 20 uint64_t unique; 21 int ctr; 22 pthread_mutex_t lock; 23 struct fuse_ctx ctx; 24 struct fuse_chan *ch; 25 int interrupted; 26 unsigned int ioctl_64bit:1; 27 union { 28 struct { 29 uint64_t unique; 30 } i; 31 struct { 32 fuse_interrupt_func_t func; 33 void *data; 34 } ni; 35 } u; 36 struct fuse_req *next; 37 struct fuse_req *prev; 38}; 39 40struct fuse_notify_req { 41 uint64_t unique; 42 void (*reply)(struct fuse_notify_req *, fuse_req_t, fuse_ino_t, 43 const void *, const struct fuse_buf *); 44 struct fuse_notify_req *next; 45 struct fuse_notify_req *prev; 46}; 47 48struct fuse_session { 49 char *mountpoint; 50 volatile int exited; 51 int fd; 52 int debug; 53 int deny_others; 54 struct fuse_lowlevel_ops op; 55 int got_init; 56 struct cuse_data *cuse_data; 57 void *userdata; 58 uid_t owner; 59 struct fuse_conn_info conn; 60 struct fuse_req list; 61 struct fuse_req interrupts; 62 pthread_mutex_t lock; 63 pthread_rwlock_t init_rwlock; 64 int got_destroy; 65 int broken_splice_nonblock; 66 uint64_t notify_ctr; 67 struct fuse_notify_req notify_list; 68 size_t bufsize; 69 int error; 70 char *vu_socket_path; 71 char *vu_socket_group; 72 int vu_listen_fd; 73 int vu_socketfd; 74 struct fv_VuDev *virtio_dev; 75 int thread_pool_size; 76}; 77 78struct fuse_chan { 79 pthread_mutex_t lock; 80 int ctr; 81 int fd; 82 struct fv_QueueInfo *qi; 83}; 84 85int fuse_send_reply_iov_nofree(fuse_req_t req, int error, struct iovec *iov, 86 int count); 87void fuse_free_req(fuse_req_t req); 88 89void fuse_session_process_buf_int(struct fuse_session *se, 90 struct fuse_bufvec *bufv, 91 struct fuse_chan *ch); 92 93 94#define FUSE_MAX_MAX_PAGES 256 95#define FUSE_DEFAULT_MAX_PAGES_PER_REQ 32 96 97/* room needed in buffer to accommodate header */ 98#define FUSE_BUFFER_HEADER_SIZE 0x1000 99 100#endif