1 /**************************************************************************** 2 **************************************************************************** 3 *** 4 *** This header was automatically generated from a Linux kernel header 5 *** of the same name, to make information necessary for userspace to 6 *** call into the kernel available to libc. It contains only constants, 7 *** structures, and macros generated from the original header, and thus, 8 *** contains no copyrightable information. 9 *** 10 *** To edit the content of this header, modify the corresponding 11 *** source file (e.g. under external/kernel-headers/original/) then 12 *** run bionic/libc/kernel/tools/update_all.py 13 *** 14 *** Any manual change here will be lost the next time this script will 15 *** be run. You've been warned! 16 *** 17 **************************************************************************** 18 ****************************************************************************/ 19 #ifndef _UAPI_LINUX_FS_H 20 #define _UAPI_LINUX_FS_H 21 #include <linux/limits.h> 22 #include <linux/ioctl.h> 23 #include <linux/types.h> 24 #include <linux/fscrypt.h> 25 #include <linux/mount.h> 26 #undef NR_OPEN 27 #define INR_OPEN_CUR 1024 28 #define INR_OPEN_MAX 4096 29 #define BLOCK_SIZE_BITS 10 30 #define BLOCK_SIZE (1 << BLOCK_SIZE_BITS) 31 #define SEEK_SET 0 32 #define SEEK_CUR 1 33 #define SEEK_END 2 34 #define SEEK_DATA 3 35 #define SEEK_HOLE 4 36 #define SEEK_MAX SEEK_HOLE 37 #define RENAME_NOREPLACE (1 << 0) 38 #define RENAME_EXCHANGE (1 << 1) 39 #define RENAME_WHITEOUT (1 << 2) 40 struct file_clone_range { 41 __s64 src_fd; 42 __u64 src_offset; 43 __u64 src_length; 44 __u64 dest_offset; 45 }; 46 struct fstrim_range { 47 __u64 start; 48 __u64 len; 49 __u64 minlen; 50 }; 51 #define FILE_DEDUPE_RANGE_SAME 0 52 #define FILE_DEDUPE_RANGE_DIFFERS 1 53 struct file_dedupe_range_info { 54 __s64 dest_fd; 55 __u64 dest_offset; 56 __u64 bytes_deduped; 57 __s32 status; 58 __u32 reserved; 59 }; 60 struct file_dedupe_range { 61 __u64 src_offset; 62 __u64 src_length; 63 __u16 dest_count; 64 __u16 reserved1; 65 __u32 reserved2; 66 struct file_dedupe_range_info info[]; 67 }; 68 struct files_stat_struct { 69 unsigned long nr_files; 70 unsigned long nr_free_files; 71 unsigned long max_files; 72 }; 73 struct inodes_stat_t { 74 long nr_inodes; 75 long nr_unused; 76 long dummy[5]; 77 }; 78 #define NR_FILE 8192 79 struct fsxattr { 80 __u32 fsx_xflags; 81 __u32 fsx_extsize; 82 __u32 fsx_nextents; 83 __u32 fsx_projid; 84 __u32 fsx_cowextsize; 85 unsigned char fsx_pad[8]; 86 }; 87 #define FS_XFLAG_REALTIME 0x00000001 88 #define FS_XFLAG_PREALLOC 0x00000002 89 #define FS_XFLAG_IMMUTABLE 0x00000008 90 #define FS_XFLAG_APPEND 0x00000010 91 #define FS_XFLAG_SYNC 0x00000020 92 #define FS_XFLAG_NOATIME 0x00000040 93 #define FS_XFLAG_NODUMP 0x00000080 94 #define FS_XFLAG_RTINHERIT 0x00000100 95 #define FS_XFLAG_PROJINHERIT 0x00000200 96 #define FS_XFLAG_NOSYMLINKS 0x00000400 97 #define FS_XFLAG_EXTSIZE 0x00000800 98 #define FS_XFLAG_EXTSZINHERIT 0x00001000 99 #define FS_XFLAG_NODEFRAG 0x00002000 100 #define FS_XFLAG_FILESTREAM 0x00004000 101 #define FS_XFLAG_DAX 0x00008000 102 #define FS_XFLAG_COWEXTSIZE 0x00010000 103 #define FS_XFLAG_HASATTR 0x80000000 104 #define BLKROSET _IO(0x12, 93) 105 #define BLKROGET _IO(0x12, 94) 106 #define BLKRRPART _IO(0x12, 95) 107 #define BLKGETSIZE _IO(0x12, 96) 108 #define BLKFLSBUF _IO(0x12, 97) 109 #define BLKRASET _IO(0x12, 98) 110 #define BLKRAGET _IO(0x12, 99) 111 #define BLKFRASET _IO(0x12, 100) 112 #define BLKFRAGET _IO(0x12, 101) 113 #define BLKSECTSET _IO(0x12, 102) 114 #define BLKSECTGET _IO(0x12, 103) 115 #define BLKSSZGET _IO(0x12, 104) 116 #define BLKBSZGET _IOR(0x12, 112, size_t) 117 #define BLKBSZSET _IOW(0x12, 113, size_t) 118 #define BLKGETSIZE64 _IOR(0x12, 114, size_t) 119 #define BLKTRACESETUP _IOWR(0x12, 115, struct blk_user_trace_setup) 120 #define BLKTRACESTART _IO(0x12, 116) 121 #define BLKTRACESTOP _IO(0x12, 117) 122 #define BLKTRACETEARDOWN _IO(0x12, 118) 123 #define BLKDISCARD _IO(0x12, 119) 124 #define BLKIOMIN _IO(0x12, 120) 125 #define BLKIOOPT _IO(0x12, 121) 126 #define BLKALIGNOFF _IO(0x12, 122) 127 #define BLKPBSZGET _IO(0x12, 123) 128 #define BLKDISCARDZEROES _IO(0x12, 124) 129 #define BLKSECDISCARD _IO(0x12, 125) 130 #define BLKROTATIONAL _IO(0x12, 126) 131 #define BLKZEROOUT _IO(0x12, 127) 132 #define BLKGETDISKSEQ _IOR(0x12, 128, __u64) 133 #define BMAP_IOCTL 1 134 #define FIBMAP _IO(0x00, 1) 135 #define FIGETBSZ _IO(0x00, 2) 136 #define FIFREEZE _IOWR('X', 119, int) 137 #define FITHAW _IOWR('X', 120, int) 138 #define FITRIM _IOWR('X', 121, struct fstrim_range) 139 #define FICLONE _IOW(0x94, 9, int) 140 #define FICLONERANGE _IOW(0x94, 13, struct file_clone_range) 141 #define FIDEDUPERANGE _IOWR(0x94, 54, struct file_dedupe_range) 142 #define FSLABEL_MAX 256 143 #define FS_IOC_GETFLAGS _IOR('f', 1, long) 144 #define FS_IOC_SETFLAGS _IOW('f', 2, long) 145 #define FS_IOC_GETVERSION _IOR('v', 1, long) 146 #define FS_IOC_SETVERSION _IOW('v', 2, long) 147 #define FS_IOC_FIEMAP _IOWR('f', 11, struct fiemap) 148 #define FS_IOC32_GETFLAGS _IOR('f', 1, int) 149 #define FS_IOC32_SETFLAGS _IOW('f', 2, int) 150 #define FS_IOC32_GETVERSION _IOR('v', 1, int) 151 #define FS_IOC32_SETVERSION _IOW('v', 2, int) 152 #define FS_IOC_FSGETXATTR _IOR('X', 31, struct fsxattr) 153 #define FS_IOC_FSSETXATTR _IOW('X', 32, struct fsxattr) 154 #define FS_IOC_GETFSLABEL _IOR(0x94, 49, char[FSLABEL_MAX]) 155 #define FS_IOC_SETFSLABEL _IOW(0x94, 50, char[FSLABEL_MAX]) 156 #define FS_SECRM_FL 0x00000001 157 #define FS_UNRM_FL 0x00000002 158 #define FS_COMPR_FL 0x00000004 159 #define FS_SYNC_FL 0x00000008 160 #define FS_IMMUTABLE_FL 0x00000010 161 #define FS_APPEND_FL 0x00000020 162 #define FS_NODUMP_FL 0x00000040 163 #define FS_NOATIME_FL 0x00000080 164 #define FS_DIRTY_FL 0x00000100 165 #define FS_COMPRBLK_FL 0x00000200 166 #define FS_NOCOMP_FL 0x00000400 167 #define FS_ENCRYPT_FL 0x00000800 168 #define FS_BTREE_FL 0x00001000 169 #define FS_INDEX_FL 0x00001000 170 #define FS_IMAGIC_FL 0x00002000 171 #define FS_JOURNAL_DATA_FL 0x00004000 172 #define FS_NOTAIL_FL 0x00008000 173 #define FS_DIRSYNC_FL 0x00010000 174 #define FS_TOPDIR_FL 0x00020000 175 #define FS_HUGE_FILE_FL 0x00040000 176 #define FS_EXTENT_FL 0x00080000 177 #define FS_VERITY_FL 0x00100000 178 #define FS_EA_INODE_FL 0x00200000 179 #define FS_EOFBLOCKS_FL 0x00400000 180 #define FS_NOCOW_FL 0x00800000 181 #define FS_DAX_FL 0x02000000 182 #define FS_INLINE_DATA_FL 0x10000000 183 #define FS_PROJINHERIT_FL 0x20000000 184 #define FS_CASEFOLD_FL 0x40000000 185 #define FS_RESERVED_FL 0x80000000 186 #define FS_FL_USER_VISIBLE 0x0003DFFF 187 #define FS_FL_USER_MODIFIABLE 0x000380FF 188 #define SYNC_FILE_RANGE_WAIT_BEFORE 1 189 #define SYNC_FILE_RANGE_WRITE 2 190 #define SYNC_FILE_RANGE_WAIT_AFTER 4 191 #define SYNC_FILE_RANGE_WRITE_AND_WAIT (SYNC_FILE_RANGE_WRITE | SYNC_FILE_RANGE_WAIT_BEFORE | SYNC_FILE_RANGE_WAIT_AFTER) 192 typedef int __bitwise __kernel_rwf_t; 193 #define RWF_HIPRI (( __kernel_rwf_t) 0x00000001) 194 #define RWF_DSYNC (( __kernel_rwf_t) 0x00000002) 195 #define RWF_SYNC (( __kernel_rwf_t) 0x00000004) 196 #define RWF_NOWAIT (( __kernel_rwf_t) 0x00000008) 197 #define RWF_APPEND (( __kernel_rwf_t) 0x00000010) 198 #define RWF_SUPPORTED (RWF_HIPRI | RWF_DSYNC | RWF_SYNC | RWF_NOWAIT | RWF_APPEND) 199 #endif 200