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