130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#ifndef _UAPI_GENERIC_STATFS_H
230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define _UAPI_GENERIC_STATFS_H
330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#include <linux/types.h>
530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/*
830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * Most 64-bit platforms use 'long', while most 32-bit platforms use '__u32'.
930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * Yes, they differ in signedness as well as size.
1030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * Special cases can override it for themselves -- except for S390x, which
1130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * is just a little too special for us. And MIPS, which I'm not touching
1230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * with a 10' pole.
1330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng */
1430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#ifndef __statfs_word
1530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#if __BITS_PER_LONG == 64
16e87eaf040ab639e94ed0a58ff0eac68d1d38fb0aEd Heyl#define __statfs_word __kernel_long_t
1730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#else
1830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define __statfs_word __u32
1930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#endif
2030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#endif
2130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
2230692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct statfs {
2330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__statfs_word f_type;
2430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__statfs_word f_bsize;
2530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__statfs_word f_blocks;
2630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__statfs_word f_bfree;
2730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__statfs_word f_bavail;
2830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__statfs_word f_files;
2930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__statfs_word f_ffree;
3030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__kernel_fsid_t f_fsid;
3130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__statfs_word f_namelen;
3230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__statfs_word f_frsize;
3330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__statfs_word f_flags;
3430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__statfs_word f_spare[4];
3530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
3630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
3730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/*
3830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * ARM needs to avoid the 32-bit padding at the end, for consistency
3930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * between EABI and OABI
4030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng */
4130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#ifndef ARCH_PACK_STATFS64
4230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define ARCH_PACK_STATFS64
4330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#endif
4430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
4530692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct statfs64 {
4630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__statfs_word f_type;
4730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__statfs_word f_bsize;
4830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u64 f_blocks;
4930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u64 f_bfree;
5030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u64 f_bavail;
5130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u64 f_files;
5230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u64 f_ffree;
5330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__kernel_fsid_t f_fsid;
5430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__statfs_word f_namelen;
5530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__statfs_word f_frsize;
5630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__statfs_word f_flags;
5730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__statfs_word f_spare[4];
5830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng} ARCH_PACK_STATFS64;
5930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
6030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/*
6130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * IA64 and x86_64 need to avoid the 32-bit padding at the end,
6230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * to be compatible with the i386 ABI
6330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng */
6430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#ifndef ARCH_PACK_COMPAT_STATFS64
6530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define ARCH_PACK_COMPAT_STATFS64
6630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#endif
6730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
6830692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct compat_statfs64 {
6930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 f_type;
7030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 f_bsize;
7130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u64 f_blocks;
7230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u64 f_bfree;
7330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u64 f_bavail;
7430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u64 f_files;
7530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u64 f_ffree;
7630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__kernel_fsid_t f_fsid;
7730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 f_namelen;
7830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 f_frsize;
7930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 f_flags;
8030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 f_spare[4];
8130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng} ARCH_PACK_COMPAT_STATFS64;
8230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
8330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#endif /* _UAPI_GENERIC_STATFS_H */
84