1*2d6b9e38Sclaudio /* $OpenBSD: fusefs.h,v 1.14 2020/01/20 23:21:56 claudio Exp $ */ 2a2badd06Stedu /* 3a2badd06Stedu * Copyright (c) 2012-2013 Sylvestre Gallon <ccna.syl@gmail.com> 4a2badd06Stedu * 5a2badd06Stedu * Permission to use, copy, modify, and distribute this software for any 6a2badd06Stedu * purpose with or without fee is hereby granted, provided that the above 7a2badd06Stedu * copyright notice and this permission notice appear in all copies. 8a2badd06Stedu * 9a2badd06Stedu * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 10a2badd06Stedu * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 11a2badd06Stedu * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 12a2badd06Stedu * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 13a2badd06Stedu * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 14a2badd06Stedu * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 15a2badd06Stedu * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 16a2badd06Stedu */ 17a2badd06Stedu 18a2badd06Stedu #ifndef __FUSEFS_H__ 19a2badd06Stedu #define __FUSEFS_H__ 20a2badd06Stedu 211f3b60e1Stedu /* sysctl defines */ 221f3b60e1Stedu #define FUSEFS_OPENDEVS 1 /* # of fuse devices opened */ 231f3b60e1Stedu #define FUSEFS_INFBUFS 2 /* # of in fbufs */ 241f3b60e1Stedu #define FUSEFS_WAITFBUFS 3 /* # of fbufs waiting for a response */ 251f3b60e1Stedu #define FUSEFS_POOL_NBPAGES 4 /* # total fusefs size */ 261f3b60e1Stedu #define FUSEFS_MAXID 5 /* number of valid fusefs ids */ 271f3b60e1Stedu 281f3b60e1Stedu #define FUSEFS_NAMES { \ 291f3b60e1Stedu { 0, 0}, \ 301f3b60e1Stedu { "fusefs_open_devices", CTLTYPE_INT }, \ 311f3b60e1Stedu { "fusefs_fbufs_in", CTLTYPE_INT }, \ 321f3b60e1Stedu { "fusefs_fbufs_wait", CTLTYPE_INT }, \ 331f3b60e1Stedu { "fusefs_pool_pages", CTLTYPE_INT }, \ 341f3b60e1Stedu } 351f3b60e1Stedu 3692f58b66Ssyl struct fb_ioctl_xch { 3792f58b66Ssyl uint64_t fbxch_uuid; 3892f58b66Ssyl size_t fbxch_len; 3992f58b66Ssyl uint8_t *fbxch_data; 4092f58b66Ssyl }; 4192f58b66Ssyl 4292f58b66Ssyl /* FUSE Device ioctls */ 4392f58b66Ssyl #define FIOCGETFBDAT _IOW('F', 0, struct fb_ioctl_xch) 4492f58b66Ssyl #define FIOCSETFBDAT _IOW('F', 1, struct fb_ioctl_xch) 4592f58b66Ssyl 461f3b60e1Stedu #ifdef _KERNEL 471f3b60e1Stedu 48a2badd06Stedu struct fuse_msg; 49a2badd06Stedu 50a2badd06Stedu struct fusefs_mnt { 51a2badd06Stedu struct mount *mp; 52a2badd06Stedu uint32_t undef_op; 534a254543Ssyl int max_read; 54a2badd06Stedu int sess_init; 550f4d2db5Shelg int allow_other; 56a2badd06Stedu dev_t dev; 57a2badd06Stedu }; 58a2badd06Stedu 59a2badd06Stedu #define UNDEF_ACCESS 1<<0 60a2badd06Stedu #define UNDEF_MKDIR 1<<1 61a2badd06Stedu #define UNDEF_CREATE 1<<2 62a2badd06Stedu #define UNDEF_LINK 1<<3 63a2badd06Stedu #define UNDEF_READLINK 1<<4 64a2badd06Stedu #define UNDEF_RMDIR 1<<5 65a2badd06Stedu #define UNDEF_REMOVE 1<<6 66a2badd06Stedu #define UNDEF_SETATTR 1<<7 67a2badd06Stedu #define UNDEF_RENAME 1<<8 68a2badd06Stedu #define UNDEF_SYMLINK 1<<9 693a6f6456Ssyl #define UNDEF_MKNOD 1<<10 70e1487996Shelg #define UNDEF_FLUSH 1<<11 710d644658Shelg #define UNDEF_FSYNC 1<<12 72a2badd06Stedu 73*2d6b9e38Sclaudio extern const struct vops fusefs_vops; 74a2badd06Stedu extern struct pool fusefs_fbuf_pool; 75a2badd06Stedu 76a2badd06Stedu /* files helpers. */ 77a2badd06Stedu int fusefs_file_open(struct fusefs_mnt *, struct fusefs_node *, enum fufh_type, 78a2badd06Stedu int, int, struct proc *); 79a2badd06Stedu int fusefs_file_close(struct fusefs_mnt *, struct fusefs_node *, 80a2badd06Stedu enum fufh_type, int, int, struct proc *); 81a2badd06Stedu 82a2badd06Stedu /* device helpers. */ 83b7e69da4Shelg void fuse_device_cleanup(dev_t); 84a2badd06Stedu void fuse_device_queue_fbuf(dev_t, struct fusebuf *); 8548ee6ddaSpelikan void fuse_device_set_fmp(struct fusefs_mnt *, int); 86a2badd06Stedu 87a2badd06Stedu /* 88a2badd06Stedu * The root inode is the root of the file system. Inode 0 can't be used for 89a2badd06Stedu * normal purposes. 90a2badd06Stedu */ 91a2badd06Stedu #define FUSE_ROOTINO ((ino_t)1) 92a2badd06Stedu #define VFSTOFUSEFS(mp) ((struct fusefs_mnt *)((mp)->mnt_data)) 93a2badd06Stedu 941f3b60e1Stedu #endif /* _KERNEL */ 95a2badd06Stedu #endif /* __FUSEFS_H__ */ 96