Using libc types and headers from the UAPI headers is problematic as it introduces a dependency on a full C toolchain. Use the fixed-width integer types provided by the UAPI headers instead. Signed-off-by: Thomas Weißschuh --- include/uapi/linux/fuse.h | 614 +++++++++++++++++++++++----------------------- 1 file changed, 305 insertions(+), 309 deletions(-) diff --git a/include/uapi/linux/fuse.h b/include/uapi/linux/fuse.h index c13e1f9a2f12..dfbd407b7bfd 100644 --- a/include/uapi/linux/fuse.h +++ b/include/uapi/linux/fuse.h @@ -245,11 +245,7 @@ #ifndef _LINUX_FUSE_H #define _LINUX_FUSE_H -#ifdef __KERNEL__ #include -#else -#include -#endif /* * Version negotiation: @@ -284,22 +280,22 @@ userspace works under 64bit kernels */ 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; + __u64 ino; + __u64 size; + __u64 blocks; + __u64 atime; + __u64 mtime; + __u64 ctime; + __u32 atimensec; + __u32 mtimensec; + __u32 ctimensec; + __u32 mode; + __u32 nlink; + __u32 uid; + __u32 gid; + __u32 rdev; + __u32 blksize; + __u32 flags; }; /* @@ -307,53 +303,53 @@ struct fuse_attr { * Linux. */ struct fuse_sx_time { - int64_t tv_sec; - uint32_t tv_nsec; - int32_t __reserved; + __s64 tv_sec; + __u32 tv_nsec; + __s32 __reserved; }; struct fuse_statx { - uint32_t mask; - uint32_t blksize; - uint64_t attributes; - uint32_t nlink; - uint32_t uid; - uint32_t gid; - uint16_t mode; - uint16_t __spare0[1]; - uint64_t ino; - uint64_t size; - uint64_t blocks; - uint64_t attributes_mask; + __u32 mask; + __u32 blksize; + __u64 attributes; + __u32 nlink; + __u32 uid; + __u32 gid; + __u16 mode; + __u16 __spare0[1]; + __u64 ino; + __u64 size; + __u64 blocks; + __u64 attributes_mask; struct fuse_sx_time atime; struct fuse_sx_time btime; struct fuse_sx_time ctime; struct fuse_sx_time mtime; - uint32_t rdev_major; - uint32_t rdev_minor; - uint32_t dev_major; - uint32_t dev_minor; - uint64_t __spare2[14]; + __u32 rdev_major; + __u32 rdev_minor; + __u32 dev_major; + __u32 dev_minor; + __u64 __spare2[14]; }; 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]; + __u64 blocks; + __u64 bfree; + __u64 bavail; + __u64 files; + __u64 ffree; + __u32 bsize; + __u32 namelen; + __u32 frsize; + __u32 padding; + __u32 spare[6]; }; struct fuse_file_lock { - uint64_t start; - uint64_t end; - uint32_t type; - uint32_t pid; /* tgid */ + __u64 start; + __u64 end; + __u32 type; + __u32 pid; /* tgid */ }; /** @@ -690,165 +686,165 @@ enum fuse_notify_code { #define FUSE_COMPAT_ENTRY_OUT_SIZE 120 struct fuse_entry_out { - uint64_t nodeid; /* Inode ID */ - uint64_t generation; /* Inode generation: nodeid:gen must + __u64 nodeid; /* Inode ID */ + __u64 generation; /* Inode generation: nodeid:gen must be unique for the fs's lifetime */ - uint64_t entry_valid; /* Cache timeout for the name */ - uint64_t attr_valid; /* Cache timeout for the attributes */ - uint32_t entry_valid_nsec; - uint32_t attr_valid_nsec; + __u64 entry_valid; /* Cache timeout for the name */ + __u64 attr_valid; /* Cache timeout for the attributes */ + __u32 entry_valid_nsec; + __u32 attr_valid_nsec; struct fuse_attr attr; }; struct fuse_forget_in { - uint64_t nlookup; + __u64 nlookup; }; struct fuse_forget_one { - uint64_t nodeid; - uint64_t nlookup; + __u64 nodeid; + __u64 nlookup; }; struct fuse_batch_forget_in { - uint32_t count; - uint32_t dummy; + __u32 count; + __u32 dummy; }; struct fuse_getattr_in { - uint32_t getattr_flags; - uint32_t dummy; - uint64_t fh; + __u32 getattr_flags; + __u32 dummy; + __u64 fh; }; #define FUSE_COMPAT_ATTR_OUT_SIZE 96 struct fuse_attr_out { - uint64_t attr_valid; /* Cache timeout for the attributes */ - uint32_t attr_valid_nsec; - uint32_t dummy; + __u64 attr_valid; /* Cache timeout for the attributes */ + __u32 attr_valid_nsec; + __u32 dummy; struct fuse_attr attr; }; struct fuse_statx_in { - uint32_t getattr_flags; - uint32_t reserved; - uint64_t fh; - uint32_t sx_flags; - uint32_t sx_mask; + __u32 getattr_flags; + __u32 reserved; + __u64 fh; + __u32 sx_flags; + __u32 sx_mask; }; struct fuse_statx_out { - uint64_t attr_valid; /* Cache timeout for the attributes */ - uint32_t attr_valid_nsec; - uint32_t flags; - uint64_t spare[2]; + __u64 attr_valid; /* Cache timeout for the attributes */ + __u32 attr_valid_nsec; + __u32 flags; + __u64 spare[2]; struct fuse_statx stat; }; #define FUSE_COMPAT_MKNOD_IN_SIZE 8 struct fuse_mknod_in { - uint32_t mode; - uint32_t rdev; - uint32_t umask; - uint32_t padding; + __u32 mode; + __u32 rdev; + __u32 umask; + __u32 padding; }; struct fuse_mkdir_in { - uint32_t mode; - uint32_t umask; + __u32 mode; + __u32 umask; }; struct fuse_rename_in { - uint64_t newdir; + __u64 newdir; }; struct fuse_rename2_in { - uint64_t newdir; - uint32_t flags; - uint32_t padding; + __u64 newdir; + __u32 flags; + __u32 padding; }; struct fuse_link_in { - uint64_t oldnodeid; + __u64 oldnodeid; }; 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; + __u32 valid; + __u32 padding; + __u64 fh; + __u64 size; + __u64 lock_owner; + __u64 atime; + __u64 mtime; + __u64 ctime; + __u32 atimensec; + __u32 mtimensec; + __u32 ctimensec; + __u32 mode; + __u32 unused4; + __u32 uid; + __u32 gid; + __u32 unused5; }; struct fuse_open_in { - uint32_t flags; - uint32_t open_flags; /* FUSE_OPEN_... */ + __u32 flags; + __u32 open_flags; /* FUSE_OPEN_... */ }; struct fuse_create_in { - uint32_t flags; - uint32_t mode; - uint32_t umask; - uint32_t open_flags; /* FUSE_OPEN_... */ + __u32 flags; + __u32 mode; + __u32 umask; + __u32 open_flags; /* FUSE_OPEN_... */ }; struct fuse_open_out { - uint64_t fh; - uint32_t open_flags; - int32_t backing_id; + __u64 fh; + __u32 open_flags; + __s32 backing_id; }; struct fuse_release_in { - uint64_t fh; - uint32_t flags; - uint32_t release_flags; - uint64_t lock_owner; + __u64 fh; + __u32 flags; + __u32 release_flags; + __u64 lock_owner; }; struct fuse_flush_in { - uint64_t fh; - uint32_t unused; - uint32_t padding; - uint64_t lock_owner; + __u64 fh; + __u32 unused; + __u32 padding; + __u64 lock_owner; }; 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; + __u64 fh; + __u64 offset; + __u32 size; + __u32 read_flags; + __u64 lock_owner; + __u32 flags; + __u32 padding; }; #define FUSE_COMPAT_WRITE_IN_SIZE 24 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; + __u64 fh; + __u64 offset; + __u32 size; + __u32 write_flags; + __u64 lock_owner; + __u32 flags; + __u32 padding; }; struct fuse_write_out { - uint32_t size; - uint32_t padding; + __u32 size; + __u32 padding; }; #define FUSE_COMPAT_STATFS_SIZE 48 @@ -858,36 +854,36 @@ struct fuse_statfs_out { }; struct fuse_fsync_in { - uint64_t fh; - uint32_t fsync_flags; - uint32_t padding; + __u64 fh; + __u32 fsync_flags; + __u32 padding; }; #define FUSE_COMPAT_SETXATTR_IN_SIZE 8 struct fuse_setxattr_in { - uint32_t size; - uint32_t flags; - uint32_t setxattr_flags; - uint32_t padding; + __u32 size; + __u32 flags; + __u32 setxattr_flags; + __u32 padding; }; struct fuse_getxattr_in { - uint32_t size; - uint32_t padding; + __u32 size; + __u32 padding; }; struct fuse_getxattr_out { - uint32_t size; - uint32_t padding; + __u32 size; + __u32 padding; }; struct fuse_lk_in { - uint64_t fh; - uint64_t owner; + __u64 fh; + __u64 owner; struct fuse_file_lock lk; - uint32_t lk_flags; - uint32_t padding; + __u32 lk_flags; + __u32 padding; }; struct fuse_lk_out { @@ -895,117 +891,117 @@ struct fuse_lk_out { }; struct fuse_access_in { - uint32_t mask; - uint32_t padding; + __u32 mask; + __u32 padding; }; struct fuse_init_in { - uint32_t major; - uint32_t minor; - uint32_t max_readahead; - uint32_t flags; - uint32_t flags2; - uint32_t unused[11]; + __u32 major; + __u32 minor; + __u32 max_readahead; + __u32 flags; + __u32 flags2; + __u32 unused[11]; }; #define FUSE_COMPAT_INIT_OUT_SIZE 8 #define FUSE_COMPAT_22_INIT_OUT_SIZE 24 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; - uint16_t request_timeout; - uint16_t unused[11]; + __u32 major; + __u32 minor; + __u32 max_readahead; + __u32 flags; + __u16 max_background; + __u16 congestion_threshold; + __u32 max_write; + __u32 time_gran; + __u16 max_pages; + __u16 map_alignment; + __u32 flags2; + __u32 max_stack_depth; + __u16 request_timeout; + __u16 unused[11]; }; #define CUSE_INIT_INFO_MAX 4096 struct cuse_init_in { - uint32_t major; - uint32_t minor; - uint32_t unused; - uint32_t flags; + __u32 major; + __u32 minor; + __u32 unused; + __u32 flags; }; struct cuse_init_out { - uint32_t major; - uint32_t minor; - uint32_t unused; - uint32_t flags; - uint32_t max_read; - uint32_t max_write; - uint32_t dev_major; /* chardev major */ - uint32_t dev_minor; /* chardev minor */ - uint32_t spare[10]; + __u32 major; + __u32 minor; + __u32 unused; + __u32 flags; + __u32 max_read; + __u32 max_write; + __u32 dev_major; /* chardev major */ + __u32 dev_minor; /* chardev minor */ + __u32 spare[10]; }; struct fuse_interrupt_in { - uint64_t unique; + __u64 unique; }; struct fuse_bmap_in { - uint64_t block; - uint32_t blocksize; - uint32_t padding; + __u64 block; + __u32 blocksize; + __u32 padding; }; struct fuse_bmap_out { - uint64_t block; + __u64 block; }; struct fuse_ioctl_in { - uint64_t fh; - uint32_t flags; - uint32_t cmd; - uint64_t arg; - uint32_t in_size; - uint32_t out_size; + __u64 fh; + __u32 flags; + __u32 cmd; + __u64 arg; + __u32 in_size; + __u32 out_size; }; struct fuse_ioctl_iovec { - uint64_t base; - uint64_t len; + __u64 base; + __u64 len; }; struct fuse_ioctl_out { - int32_t result; - uint32_t flags; - uint32_t in_iovs; - uint32_t out_iovs; + __s32 result; + __u32 flags; + __u32 in_iovs; + __u32 out_iovs; }; struct fuse_poll_in { - uint64_t fh; - uint64_t kh; - uint32_t flags; - uint32_t events; + __u64 fh; + __u64 kh; + __u32 flags; + __u32 events; }; struct fuse_poll_out { - uint32_t revents; - uint32_t padding; + __u32 revents; + __u32 padding; }; struct fuse_notify_poll_wakeup_out { - uint64_t kh; + __u64 kh; }; struct fuse_fallocate_in { - uint64_t fh; - uint64_t offset; - uint64_t length; - uint32_t mode; - uint32_t padding; + __u64 fh; + __u64 offset; + __u64 length; + __u32 mode; + __u32 padding; }; /** @@ -1029,37 +1025,37 @@ struct fuse_fallocate_in { * FUSE_MKNOD, FUSE_SYMLINK, FUSE_MKDIR, FUSE_TMPFILE, * FUSE_CREATE and FUSE_RENAME2 (with RENAME_WHITEOUT). */ -#define FUSE_INVALID_UIDGID ((uint32_t)(-1)) +#define FUSE_INVALID_UIDGID ((__u32)(-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; /* length of extensions in 8byte units */ - uint16_t padding; + __u32 len; + __u32 opcode; + __u64 unique; + __u64 nodeid; + __u32 uid; + __u32 gid; + __u32 pid; + __u16 total_extlen; /* length of extensions in 8byte units */ + __u16 padding; }; struct fuse_out_header { - uint32_t len; - int32_t error; - uint64_t unique; + __u32 len; + __s32 error; + __u64 unique; }; struct fuse_dirent { - uint64_t ino; - uint64_t off; - uint32_t namelen; - uint32_t type; + __u64 ino; + __u64 off; + __u32 namelen; + __u32 type; char name[]; }; /* Align variable length records to 64bit boundary */ #define FUSE_REC_ALIGN(x) \ - (((x) + sizeof(uint64_t) - 1) & ~(sizeof(uint64_t) - 1)) + (((x) + sizeof(__u64) - 1) & ~(sizeof(__u64) - 1)) #define FUSE_NAME_OFFSET offsetof(struct fuse_dirent, name) #define FUSE_DIRENT_ALIGN(x) FUSE_REC_ALIGN(x) @@ -1077,127 +1073,127 @@ struct fuse_direntplus { FUSE_DIRENT_ALIGN(FUSE_NAME_OFFSET_DIRENTPLUS + (d)->dirent.namelen) struct fuse_notify_inval_inode_out { - uint64_t ino; - int64_t off; - int64_t len; + __u64 ino; + __s64 off; + __s64 len; }; struct fuse_notify_inval_entry_out { - uint64_t parent; - uint32_t namelen; - uint32_t flags; + __u64 parent; + __u32 namelen; + __u32 flags; }; struct fuse_notify_delete_out { - uint64_t parent; - uint64_t child; - uint32_t namelen; - uint32_t padding; + __u64 parent; + __u64 child; + __u32 namelen; + __u32 padding; }; struct fuse_notify_store_out { - uint64_t nodeid; - uint64_t offset; - uint32_t size; - uint32_t padding; + __u64 nodeid; + __u64 offset; + __u32 size; + __u32 padding; }; struct fuse_notify_retrieve_out { - uint64_t notify_unique; - uint64_t nodeid; - uint64_t offset; - uint32_t size; - uint32_t padding; + __u64 notify_unique; + __u64 nodeid; + __u64 offset; + __u32 size; + __u32 padding; }; /* Matches the size of fuse_write_in */ struct fuse_notify_retrieve_in { - uint64_t dummy1; - uint64_t offset; - uint32_t size; - uint32_t dummy2; - uint64_t dummy3; - uint64_t dummy4; + __u64 dummy1; + __u64 offset; + __u32 size; + __u32 dummy2; + __u64 dummy3; + __u64 dummy4; }; struct fuse_notify_prune_out { - uint32_t count; - uint32_t padding; - uint64_t spare; + __u32 count; + __u32 padding; + __u64 spare; }; struct fuse_backing_map { - int32_t fd; - uint32_t flags; - uint64_t padding; + __s32 fd; + __u32 flags; + __u64 padding; }; /* Device ioctls: */ #define FUSE_DEV_IOC_MAGIC 229 -#define FUSE_DEV_IOC_CLONE _IOR(FUSE_DEV_IOC_MAGIC, 0, uint32_t) +#define FUSE_DEV_IOC_CLONE _IOR(FUSE_DEV_IOC_MAGIC, 0, __u32) #define FUSE_DEV_IOC_BACKING_OPEN _IOW(FUSE_DEV_IOC_MAGIC, 1, \ struct fuse_backing_map) -#define FUSE_DEV_IOC_BACKING_CLOSE _IOW(FUSE_DEV_IOC_MAGIC, 2, uint32_t) +#define FUSE_DEV_IOC_BACKING_CLOSE _IOW(FUSE_DEV_IOC_MAGIC, 2, __u32) #define FUSE_DEV_IOC_SYNC_INIT _IO(FUSE_DEV_IOC_MAGIC, 3) struct fuse_lseek_in { - uint64_t fh; - uint64_t offset; - uint32_t whence; - uint32_t padding; + __u64 fh; + __u64 offset; + __u32 whence; + __u32 padding; }; struct fuse_lseek_out { - uint64_t offset; + __u64 offset; }; struct fuse_copy_file_range_in { - uint64_t fh_in; - uint64_t off_in; - uint64_t nodeid_out; - uint64_t fh_out; - uint64_t off_out; - uint64_t len; - uint64_t flags; + __u64 fh_in; + __u64 off_in; + __u64 nodeid_out; + __u64 fh_out; + __u64 off_out; + __u64 len; + __u64 flags; }; /* For FUSE_COPY_FILE_RANGE_64 */ struct fuse_copy_file_range_out { - uint64_t bytes_copied; + __u64 bytes_copied; }; #define FUSE_SETUPMAPPING_FLAG_WRITE (1ull << 0) #define FUSE_SETUPMAPPING_FLAG_READ (1ull << 1) struct fuse_setupmapping_in { /* An already open handle */ - uint64_t fh; + __u64 fh; /* Offset into the file to start the mapping */ - uint64_t foffset; + __u64 foffset; /* Length of mapping required */ - uint64_t len; + __u64 len; /* Flags, FUSE_SETUPMAPPING_FLAG_* */ - uint64_t flags; + __u64 flags; /* Offset in Memory Window */ - uint64_t moffset; + __u64 moffset; }; struct fuse_removemapping_in { /* number of fuse_removemapping_one follows */ - uint32_t count; + __u32 count; }; struct fuse_removemapping_one { /* Offset into the dax window start the unmapping */ - uint64_t moffset; + __u64 moffset; /* Length of mapping required */ - uint64_t len; + __u64 len; }; #define FUSE_REMOVEMAPPING_MAX_ENTRY \ (PAGE_SIZE / sizeof(struct fuse_removemapping_one)) struct fuse_syncfs_in { - uint64_t padding; + __u64 padding; }; /* @@ -1207,8 +1203,8 @@ struct fuse_syncfs_in { * fuse_secctx, name, context */ struct fuse_secctx { - uint32_t size; - uint32_t padding; + __u32 size; + __u32 padding; }; /* @@ -1218,8 +1214,8 @@ struct fuse_secctx { * */ struct fuse_secctx_header { - uint32_t size; - uint32_t nr_secctx; + __u32 size; + __u32 nr_secctx; }; /** @@ -1231,8 +1227,8 @@ struct fuse_secctx_header { * FUSE_MAX_NR_SECCTX */ struct fuse_ext_header { - uint32_t size; - uint32_t type; + __u32 size; + __u32 type; }; /** @@ -1241,8 +1237,8 @@ struct fuse_ext_header { * @groups: flexible array of group IDs */ struct fuse_supp_groups { - uint32_t nr_groups; - uint32_t groups[]; + __u32 nr_groups; + __u32 groups[]; }; /** @@ -1253,19 +1249,19 @@ struct fuse_supp_groups { /* Used as part of the fuse_uring_req_header */ struct fuse_uring_ent_in_out { - uint64_t flags; + __u64 flags; /* * commit ID to be used in a reply to a ring request (see also * struct fuse_uring_cmd_req) */ - uint64_t commit_id; + __u64 commit_id; /* size of user payload buffer */ - uint32_t payload_sz; - uint32_t padding; + __u32 payload_sz; + __u32 padding; - uint64_t reserved; + __u64 reserved; }; /** @@ -1298,14 +1294,14 @@ enum fuse_uring_cmd { * In the 80B command area of the SQE. */ struct fuse_uring_cmd_req { - uint64_t flags; + __u64 flags; /* entry identifier for commits */ - uint64_t commit_id; + __u64 commit_id; /* queue the command is for (queue index) */ - uint16_t qid; - uint8_t padding[6]; + __u16 qid; + __u8 padding[6]; }; #endif /* _LINUX_FUSE_H */ --- base-commit: 8f0b4cce4481fb22653697cced8d0d04027cb1e8 change-id: 20251222-uapi-fuse-1acdfb5abf77 Best regards, -- Thomas Weißschuh