1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0 */ 2*4882a593Smuzhiyun #ifndef _LINUX_STAT_H 3*4882a593Smuzhiyun #define _LINUX_STAT_H 4*4882a593Smuzhiyun 5*4882a593Smuzhiyun 6*4882a593Smuzhiyun #include <asm/stat.h> 7*4882a593Smuzhiyun #include <uapi/linux/stat.h> 8*4882a593Smuzhiyun 9*4882a593Smuzhiyun #define S_IRWXUGO (S_IRWXU|S_IRWXG|S_IRWXO) 10*4882a593Smuzhiyun #define S_IALLUGO (S_ISUID|S_ISGID|S_ISVTX|S_IRWXUGO) 11*4882a593Smuzhiyun #define S_IRUGO (S_IRUSR|S_IRGRP|S_IROTH) 12*4882a593Smuzhiyun #define S_IWUGO (S_IWUSR|S_IWGRP|S_IWOTH) 13*4882a593Smuzhiyun #define S_IXUGO (S_IXUSR|S_IXGRP|S_IXOTH) 14*4882a593Smuzhiyun 15*4882a593Smuzhiyun #define UTIME_NOW ((1l << 30) - 1l) 16*4882a593Smuzhiyun #define UTIME_OMIT ((1l << 30) - 2l) 17*4882a593Smuzhiyun 18*4882a593Smuzhiyun #include <linux/types.h> 19*4882a593Smuzhiyun #include <linux/time.h> 20*4882a593Smuzhiyun #include <linux/uidgid.h> 21*4882a593Smuzhiyun 22*4882a593Smuzhiyun struct kstat { 23*4882a593Smuzhiyun u32 result_mask; /* What fields the user got */ 24*4882a593Smuzhiyun umode_t mode; 25*4882a593Smuzhiyun unsigned int nlink; 26*4882a593Smuzhiyun uint32_t blksize; /* Preferred I/O size */ 27*4882a593Smuzhiyun u64 attributes; 28*4882a593Smuzhiyun u64 attributes_mask; 29*4882a593Smuzhiyun #define KSTAT_ATTR_FS_IOC_FLAGS \ 30*4882a593Smuzhiyun (STATX_ATTR_COMPRESSED | \ 31*4882a593Smuzhiyun STATX_ATTR_IMMUTABLE | \ 32*4882a593Smuzhiyun STATX_ATTR_APPEND | \ 33*4882a593Smuzhiyun STATX_ATTR_NODUMP | \ 34*4882a593Smuzhiyun STATX_ATTR_ENCRYPTED | \ 35*4882a593Smuzhiyun STATX_ATTR_VERITY \ 36*4882a593Smuzhiyun )/* Attrs corresponding to FS_*_FL flags */ 37*4882a593Smuzhiyun u64 ino; 38*4882a593Smuzhiyun dev_t dev; 39*4882a593Smuzhiyun dev_t rdev; 40*4882a593Smuzhiyun kuid_t uid; 41*4882a593Smuzhiyun kgid_t gid; 42*4882a593Smuzhiyun loff_t size; 43*4882a593Smuzhiyun struct timespec64 atime; 44*4882a593Smuzhiyun struct timespec64 mtime; 45*4882a593Smuzhiyun struct timespec64 ctime; 46*4882a593Smuzhiyun struct timespec64 btime; /* File creation time */ 47*4882a593Smuzhiyun u64 blocks; 48*4882a593Smuzhiyun u64 mnt_id; 49*4882a593Smuzhiyun }; 50*4882a593Smuzhiyun 51*4882a593Smuzhiyun #endif 52