From 4b2157c44e6ad7e692fcffb7450143e83151d36b Mon Sep 17 00:00:00 2001 From: Miklos Szeredi Date: Tue, 6 Dec 2011 18:06:18 +0100 Subject: Add mmap() and munmap() methods to low level API Currently this is only useful for CUSE. Also update retrieve_reply() method. --- include/fuse_lowlevel.h | 53 +++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 51 insertions(+), 2 deletions(-) (limited to 'include/fuse_lowlevel.h') diff --git a/include/fuse_lowlevel.h b/include/fuse_lowlevel.h index 51aea39..6435937 100644 --- a/include/fuse_lowlevel.h +++ b/include/fuse_lowlevel.h @@ -911,13 +911,19 @@ struct fuse_lowlevel_ops { /** * Callback function for the retrieve request * + * Introduced in version 2.9 + * + * Valid replies: + * fuse_reply_none + * + * @param req request handle * @param cookie user data supplied to fuse_lowlevel_notify_retrieve() * @param ino the inode number supplied to fuse_lowlevel_notify_retrieve() * @param offset the offset supplied to fuse_lowlevel_notify_retrieve() * @param bufv the buffer containing the returned data */ - void (*retrieve_reply) (void *cookie, fuse_ino_t ino, off_t offset, - struct fuse_bufvec *bufv); + void (*retrieve_reply) (fuse_req_t req, void *cookie, fuse_ino_t ino, + off_t offset, struct fuse_bufvec *bufv); /** * Forget about multiple inodes @@ -951,6 +957,37 @@ struct fuse_lowlevel_ops { */ void (*flock) (fuse_req_t req, fuse_ino_t ino, struct fuse_file_info *fi, int op); + + /** + * Direct mmap (CUSE only for now) + * + * @param req request handle + * @param ino the inode number + * @param addr starting address (in clients address space) + * @param length length of the mapping + * @param prot desired memory protection of the mapping + * @param flags mmap flags + * @param fi file information + * + * Introduced in version 2.9 + */ + void (*mmap) (fuse_req_t req, fuse_ino_t ino, uint64_t addr, + size_t length, int prot, int flags, off_t offset, + struct fuse_file_info *fi); + + /** + * Direct munmap (CUSE only for now) + * + * @param req request handle + * @param ino the inode number + * @param map_id identifies the mapping + * @param length length of the mapping + * @param fi file information + * + * Introduced in version 2.9 + */ + void (*munmap) (fuse_req_t req, fuse_ino_t ino, uint64_t map_id, + size_t length, struct fuse_file_info *fi); }; /** @@ -1234,6 +1271,18 @@ int fuse_reply_ioctl_iov(fuse_req_t req, int result, const struct iovec *iov, */ int fuse_reply_poll(fuse_req_t req, unsigned revents); +/** + * Reply to an mmap request + * + * Possible requests: + * mmap + * + * @param req request handle + * @param map_id identifies the mapping + * @param length length of the mapping (from zero offset) + */ +int fuse_reply_mmap(fuse_req_t req, uint64_t map_id, size_t length); + /* ----------------------------------------------------------- * * Notification * * ----------------------------------------------------------- */ -- cgit v1.2.3