Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
0002 #ifndef _UAPI_GENERIC_STATFS_H
0003 #define _UAPI_GENERIC_STATFS_H
0004 
0005 #include <linux/types.h>
0006 
0007 
0008 /*
0009  * Most 64-bit platforms use 'long', while most 32-bit platforms use '__u32'.
0010  * Yes, they differ in signedness as well as size.
0011  * Special cases can override it for themselves -- except for S390x, which
0012  * is just a little too special for us. And MIPS, which I'm not touching
0013  * with a 10' pole.
0014  */
0015 #ifndef __statfs_word
0016 #if __BITS_PER_LONG == 64
0017 #define __statfs_word __kernel_long_t
0018 #else
0019 #define __statfs_word __u32
0020 #endif
0021 #endif
0022 
0023 struct statfs {
0024     __statfs_word f_type;
0025     __statfs_word f_bsize;
0026     __statfs_word f_blocks;
0027     __statfs_word f_bfree;
0028     __statfs_word f_bavail;
0029     __statfs_word f_files;
0030     __statfs_word f_ffree;
0031     __kernel_fsid_t f_fsid;
0032     __statfs_word f_namelen;
0033     __statfs_word f_frsize;
0034     __statfs_word f_flags;
0035     __statfs_word f_spare[4];
0036 };
0037 
0038 /*
0039  * ARM needs to avoid the 32-bit padding at the end, for consistency
0040  * between EABI and OABI 
0041  */
0042 #ifndef ARCH_PACK_STATFS64
0043 #define ARCH_PACK_STATFS64
0044 #endif
0045 
0046 struct statfs64 {
0047     __statfs_word f_type;
0048     __statfs_word f_bsize;
0049     __u64 f_blocks;
0050     __u64 f_bfree;
0051     __u64 f_bavail;
0052     __u64 f_files;
0053     __u64 f_ffree;
0054     __kernel_fsid_t f_fsid;
0055     __statfs_word f_namelen;
0056     __statfs_word f_frsize;
0057     __statfs_word f_flags;
0058     __statfs_word f_spare[4];
0059 } ARCH_PACK_STATFS64;
0060 
0061 /* 
0062  * IA64 and x86_64 need to avoid the 32-bit padding at the end,
0063  * to be compatible with the i386 ABI
0064  */
0065 #ifndef ARCH_PACK_COMPAT_STATFS64
0066 #define ARCH_PACK_COMPAT_STATFS64
0067 #endif
0068 
0069 struct compat_statfs64 {
0070     __u32 f_type;
0071     __u32 f_bsize;
0072     __u64 f_blocks;
0073     __u64 f_bfree;
0074     __u64 f_bavail;
0075     __u64 f_files;
0076     __u64 f_ffree;
0077     __kernel_fsid_t f_fsid;
0078     __u32 f_namelen;
0079     __u32 f_frsize;
0080     __u32 f_flags;
0081     __u32 f_spare[4];
0082 } ARCH_PACK_COMPAT_STATFS64;
0083 
0084 #endif /* _UAPI_GENERIC_STATFS_H */