1224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#ifndef _UAPI_GENERIC_STATFS_H 2224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define _UAPI_GENERIC_STATFS_H 3224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 4224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#include <linux/types.h> 5224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 6224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 7224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng/* 8224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * Most 64-bit platforms use 'long', while most 32-bit platforms use '__u32'. 9224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * Yes, they differ in signedness as well as size. 10224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * Special cases can override it for themselves -- except for S390x, which 11224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * is just a little too special for us. And MIPS, which I'm not touching 12224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * with a 10' pole. 13224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng */ 14224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#ifndef __statfs_word 15224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#if __BITS_PER_LONG == 64 16e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris#define __statfs_word __kernel_long_t 17224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#else 18224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define __statfs_word __u32 19224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#endif 20224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#endif 21224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 22224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Chengstruct statfs { 23224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __statfs_word f_type; 24224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __statfs_word f_bsize; 25224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __statfs_word f_blocks; 26224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __statfs_word f_bfree; 27224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __statfs_word f_bavail; 28224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __statfs_word f_files; 29224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __statfs_word f_ffree; 30224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __kernel_fsid_t f_fsid; 31224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __statfs_word f_namelen; 32224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __statfs_word f_frsize; 33224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __statfs_word f_flags; 34224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __statfs_word f_spare[4]; 35224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng}; 36224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 37224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng/* 38224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * ARM needs to avoid the 32-bit padding at the end, for consistency 39224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * between EABI and OABI 40224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng */ 41224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#ifndef ARCH_PACK_STATFS64 42224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define ARCH_PACK_STATFS64 43224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#endif 44224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 45224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Chengstruct statfs64 { 46224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __statfs_word f_type; 47224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __statfs_word f_bsize; 48224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 f_blocks; 49224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 f_bfree; 50224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 f_bavail; 51224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 f_files; 52224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 f_ffree; 53224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __kernel_fsid_t f_fsid; 54224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __statfs_word f_namelen; 55224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __statfs_word f_frsize; 56224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __statfs_word f_flags; 57224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __statfs_word f_spare[4]; 58224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng} ARCH_PACK_STATFS64; 59224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 60224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng/* 61224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * IA64 and x86_64 need to avoid the 32-bit padding at the end, 62224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * to be compatible with the i386 ABI 63224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng */ 64224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#ifndef ARCH_PACK_COMPAT_STATFS64 65224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define ARCH_PACK_COMPAT_STATFS64 66224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#endif 67224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 68224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Chengstruct compat_statfs64 { 69224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u32 f_type; 70224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u32 f_bsize; 71224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 f_blocks; 72224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 f_bfree; 73224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 f_bavail; 74224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 f_files; 75224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 f_ffree; 76224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __kernel_fsid_t f_fsid; 77224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u32 f_namelen; 78224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u32 f_frsize; 79224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u32 f_flags; 80224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u32 f_spare[4]; 81224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng} ARCH_PACK_COMPAT_STATFS64; 82224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 83224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#endif /* _UAPI_GENERIC_STATFS_H */ 84