1 /* SPDX-License-Identifier: GPL-2.0 WITH Linux << 2 #ifndef _UAPI_GENERIC_STATFS_H 1 #ifndef _UAPI_GENERIC_STATFS_H 3 #define _UAPI_GENERIC_STATFS_H 2 #define _UAPI_GENERIC_STATFS_H 4 3 5 #include <linux/types.h> 4 #include <linux/types.h> 6 5 7 6 8 /* 7 /* 9 * Most 64-bit platforms use 'long', while mos 8 * Most 64-bit platforms use 'long', while most 32-bit platforms use '__u32'. 10 * Yes, they differ in signedness as well as s 9 * Yes, they differ in signedness as well as size. 11 * Special cases can override it for themselve 10 * Special cases can override it for themselves -- except for S390x, which 12 * is just a little too special for us. And MI 11 * is just a little too special for us. And MIPS, which I'm not touching 13 * with a 10' pole. 12 * with a 10' pole. 14 */ 13 */ 15 #ifndef __statfs_word 14 #ifndef __statfs_word 16 #if __BITS_PER_LONG == 64 15 #if __BITS_PER_LONG == 64 17 #define __statfs_word __kernel_long_t !! 16 #define __statfs_word long 18 #else 17 #else 19 #define __statfs_word __u32 18 #define __statfs_word __u32 20 #endif 19 #endif 21 #endif 20 #endif 22 21 23 struct statfs { 22 struct statfs { 24 __statfs_word f_type; 23 __statfs_word f_type; 25 __statfs_word f_bsize; 24 __statfs_word f_bsize; 26 __statfs_word f_blocks; 25 __statfs_word f_blocks; 27 __statfs_word f_bfree; 26 __statfs_word f_bfree; 28 __statfs_word f_bavail; 27 __statfs_word f_bavail; 29 __statfs_word f_files; 28 __statfs_word f_files; 30 __statfs_word f_ffree; 29 __statfs_word f_ffree; 31 __kernel_fsid_t f_fsid; 30 __kernel_fsid_t f_fsid; 32 __statfs_word f_namelen; 31 __statfs_word f_namelen; 33 __statfs_word f_frsize; 32 __statfs_word f_frsize; 34 __statfs_word f_flags; 33 __statfs_word f_flags; 35 __statfs_word f_spare[4]; 34 __statfs_word f_spare[4]; 36 }; 35 }; 37 36 38 /* 37 /* 39 * ARM needs to avoid the 32-bit padding at th 38 * ARM needs to avoid the 32-bit padding at the end, for consistency 40 * between EABI and OABI 39 * between EABI and OABI 41 */ 40 */ 42 #ifndef ARCH_PACK_STATFS64 41 #ifndef ARCH_PACK_STATFS64 43 #define ARCH_PACK_STATFS64 42 #define ARCH_PACK_STATFS64 44 #endif 43 #endif 45 44 46 struct statfs64 { 45 struct statfs64 { 47 __statfs_word f_type; 46 __statfs_word f_type; 48 __statfs_word f_bsize; 47 __statfs_word f_bsize; 49 __u64 f_blocks; 48 __u64 f_blocks; 50 __u64 f_bfree; 49 __u64 f_bfree; 51 __u64 f_bavail; 50 __u64 f_bavail; 52 __u64 f_files; 51 __u64 f_files; 53 __u64 f_ffree; 52 __u64 f_ffree; 54 __kernel_fsid_t f_fsid; 53 __kernel_fsid_t f_fsid; 55 __statfs_word f_namelen; 54 __statfs_word f_namelen; 56 __statfs_word f_frsize; 55 __statfs_word f_frsize; 57 __statfs_word f_flags; 56 __statfs_word f_flags; 58 __statfs_word f_spare[4]; 57 __statfs_word f_spare[4]; 59 } ARCH_PACK_STATFS64; 58 } ARCH_PACK_STATFS64; 60 59 61 /* 60 /* 62 * IA64 and x86_64 need to avoid the 32-bit pa 61 * IA64 and x86_64 need to avoid the 32-bit padding at the end, 63 * to be compatible with the i386 ABI 62 * to be compatible with the i386 ABI 64 */ 63 */ 65 #ifndef ARCH_PACK_COMPAT_STATFS64 64 #ifndef ARCH_PACK_COMPAT_STATFS64 66 #define ARCH_PACK_COMPAT_STATFS64 65 #define ARCH_PACK_COMPAT_STATFS64 67 #endif 66 #endif 68 67 69 struct compat_statfs64 { 68 struct compat_statfs64 { 70 __u32 f_type; 69 __u32 f_type; 71 __u32 f_bsize; 70 __u32 f_bsize; 72 __u64 f_blocks; 71 __u64 f_blocks; 73 __u64 f_bfree; 72 __u64 f_bfree; 74 __u64 f_bavail; 73 __u64 f_bavail; 75 __u64 f_files; 74 __u64 f_files; 76 __u64 f_ffree; 75 __u64 f_ffree; 77 __kernel_fsid_t f_fsid; 76 __kernel_fsid_t f_fsid; 78 __u32 f_namelen; 77 __u32 f_namelen; 79 __u32 f_frsize; 78 __u32 f_frsize; 80 __u32 f_flags; 79 __u32 f_flags; 81 __u32 f_spare[4]; 80 __u32 f_spare[4]; 82 } ARCH_PACK_COMPAT_STATFS64; 81 } ARCH_PACK_COMPAT_STATFS64; 83 82 84 #endif /* _UAPI_GENERIC_STATFS_H */ 83 #endif /* _UAPI_GENERIC_STATFS_H */ 85 84
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.