| /* SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-2-Clause) */ |
| |
| /* |
| * This file is based on include/uapi/linux/fuse.h from Linux, and is used |
| * under the BSD-2-Clause license, as per the dual-license option |
| */ |
| /* |
| * This file defines the kernel interface of FUSE |
| * This -- and only this -- header file may also be distributed under |
| * the terms of the BSD Licence as follows: |
| * |
| * Copyright (C) 2001-2007 Miklos Szeredi. All rights reserved. |
| * |
| * Redistribution and use in source and binary forms, with or without |
| * modification, are permitted provided that the following conditions |
| * are met: |
| * 1. Redistributions of source code must retain the above copyright |
| * notice, this list of conditions and the following disclaimer. |
| * 2. Redistributions in binary form must reproduce the above copyright |
| * notice, this list of conditions and the following disclaimer in the |
| * documentation and/or other materials provided with the distribution. |
| * |
| * THIS SOFTWARE IS PROVIDED BY AUTHOR AND CONTRIBUTORS ``AS IS'' AND |
| * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
| * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
| * ARE DISCLAIMED. IN NO EVENT SHALL AUTHOR OR CONTRIBUTORS BE LIABLE |
| * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
| * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS |
| * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) |
| * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT |
| * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY |
| * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF |
| * SUCH DAMAGE. |
| */ |
| |
| #ifndef ZEPHYR_SUBSYS_FS_FUSE_ABI_H_ |
| #define ZEPHYR_SUBSYS_FS_FUSE_ABI_H_ |
| #include <stdint.h> |
| |
| #define FUSE_MAJOR_VERSION 7 |
| #define FUSE_MINOR_VERSION 31 |
| |
| #define FUSE_LOOKUP 1 |
| #define FUSE_FORGET 2 |
| #define FUSE_SETATTR 4 |
| #define FUSE_MKDIR 9 |
| #define FUSE_UNLINK 10 |
| #define FUSE_RMDIR 11 |
| #define FUSE_RENAME 12 |
| #define FUSE_OPEN 14 |
| #define FUSE_READ 15 |
| #define FUSE_WRITE 16 |
| #define FUSE_STATFS 17 |
| #define FUSE_RELEASE 18 |
| #define FUSE_FSYNC 20 |
| #define FUSE_INIT 26 |
| #define FUSE_OPENDIR 27 |
| #define FUSE_READDIR 28 |
| #define FUSE_RELEASEDIR 29 |
| #define FUSE_CREATE 35 |
| #define FUSE_DESTROY 38 |
| #define FUSE_LSEEK 46 |
| |
| #define FUSE_ROOT_INODE 1 |
| |
| struct fuse_in_header { |
| uint32_t len; |
| uint32_t opcode; |
| uint64_t unique; |
| uint64_t nodeid; |
| uint32_t uid; |
| uint32_t gid; |
| uint32_t pid; |
| uint16_t total_extlen; |
| uint16_t padding; |
| }; |
| |
| struct fuse_out_header { |
| uint32_t len; |
| int32_t error; |
| uint64_t unique; |
| }; |
| |
| struct fuse_init_in { |
| uint32_t major; |
| uint32_t minor; |
| uint32_t max_readahead; |
| uint32_t flags; |
| uint32_t flags2; |
| uint32_t unused[11]; |
| }; |
| |
| struct fuse_init_out { |
| uint32_t major; |
| uint32_t minor; |
| uint32_t max_readahead; |
| uint32_t flags; |
| uint16_t max_background; |
| uint16_t congestion_threshold; |
| uint32_t max_write; |
| uint32_t time_gran; |
| uint16_t max_pages; |
| uint16_t map_alignment; |
| uint32_t flags2; |
| uint32_t max_stack_depth; |
| uint32_t unused[6]; |
| }; |
| |
| struct fuse_open_in { |
| uint32_t flags; |
| uint32_t open_flags; |
| }; |
| |
| struct fuse_open_out { |
| uint64_t fh; |
| uint32_t open_flags; |
| int32_t backing_id; |
| }; |
| |
| struct fuse_attr { |
| uint64_t ino; |
| uint64_t size; |
| uint64_t blocks; |
| uint64_t atime; |
| uint64_t mtime; |
| uint64_t ctime; |
| uint32_t atimensec; |
| uint32_t mtimensec; |
| uint32_t ctimensec; |
| uint32_t mode; |
| uint32_t nlink; |
| uint32_t uid; |
| uint32_t gid; |
| uint32_t rdev; |
| uint32_t blksize; |
| uint32_t flags; |
| }; |
| |
| struct fuse_entry_out { |
| uint64_t nodeid; |
| uint64_t generation; |
| uint64_t entry_valid; |
| uint64_t attr_valid; |
| uint32_t entry_valid_nsec; |
| uint32_t attr_valid_nsec; |
| struct fuse_attr attr; |
| }; |
| |
| struct fuse_read_in { |
| uint64_t fh; |
| uint64_t offset; |
| uint32_t size; |
| uint32_t read_flags; |
| uint64_t lock_owner; |
| uint32_t flags; |
| uint32_t padding; |
| }; |
| |
| struct fuse_release_in { |
| uint64_t fh; |
| uint32_t flags; |
| uint32_t release_flags; |
| uint64_t lock_owner; |
| }; |
| |
| struct fuse_create_in { |
| uint32_t flags; |
| uint32_t mode; |
| uint32_t umask; |
| uint32_t open_flags; |
| }; |
| |
| struct fuse_create_out { |
| struct fuse_entry_out entry_out; |
| struct fuse_open_out open_out; |
| }; |
| |
| struct fuse_write_in { |
| uint64_t fh; |
| uint64_t offset; |
| uint32_t size; |
| uint32_t write_flags; |
| uint64_t lock_owner; |
| uint32_t flags; |
| uint32_t padding; |
| }; |
| |
| struct fuse_write_out { |
| uint32_t size; |
| uint32_t padding; |
| }; |
| |
| struct fuse_lseek_in { |
| uint64_t fh; |
| uint64_t offset; |
| uint32_t whence; |
| uint32_t padding; |
| }; |
| |
| struct fuse_lseek_out { |
| uint64_t offset; |
| }; |
| |
| /* mask used to set file size, used in fuse_setattr_in::valid */ |
| #define FATTR_SIZE (1 << 3) |
| |
| struct fuse_setattr_in { |
| uint32_t valid; |
| uint32_t padding; |
| uint64_t fh; |
| uint64_t size; |
| uint64_t lock_owner; |
| uint64_t atime; |
| uint64_t mtime; |
| uint64_t ctime; |
| uint32_t atimensec; |
| uint32_t mtimensec; |
| uint32_t ctimensec; |
| uint32_t mode; |
| uint32_t unused4; |
| uint32_t uid; |
| uint32_t gid; |
| uint32_t unused5; |
| }; |
| |
| struct fuse_attr_out { |
| uint64_t attr_valid; |
| uint32_t attr_valid_nsec; |
| uint32_t dummy; |
| struct fuse_attr attr; |
| }; |
| |
| struct fuse_fsync_in { |
| uint64_t fh; |
| uint32_t fsync_flags; |
| uint32_t padding; |
| }; |
| |
| struct fuse_mkdir_in { |
| uint32_t mode; |
| uint32_t umask; |
| }; |
| |
| struct fuse_rename_in { |
| uint64_t newdir; |
| }; |
| |
| struct fuse_kstatfs { |
| uint64_t blocks; |
| uint64_t bfree; |
| uint64_t bavail; |
| uint64_t files; |
| uint64_t ffree; |
| uint32_t bsize; |
| uint32_t namelen; |
| uint32_t frsize; |
| uint32_t padding; |
| uint32_t spare[6]; |
| }; |
| |
| struct fuse_dirent { |
| uint64_t ino; |
| uint64_t off; |
| uint32_t namelen; |
| uint32_t type; |
| char name[]; |
| }; |
| |
| struct fuse_forget_in { |
| uint64_t nlookup; |
| }; |
| |
| #endif /* ZEPHYR_SUBSYS_FS_FUSE_ABI_H_ */ |