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