2 * Copyright (c) 2014-2018 Dmitry V. Levin <ldv@altlinux.org>
5 * SPDX-License-Identifier: LGPL-2.1-or-later
10 #include "xlat/fsmagic.h"
11 #include "xlat/statfs_flags.h"
14 print_statfs_type(const char *const prefix, const unsigned long long magic)
17 printxval(fsmagic, magic, NULL);
20 #if defined HAVE_STRUCT_STATFS_F_FLAGS || defined HAVE_STRUCT_STATFS64_F_FLAGS
22 print_statfs_flags(const char *const prefix, const unsigned long long flags)
24 if (flags & ST_VALID) {
26 printflags64(statfs_flags, flags, "ST_???");
29 #endif /* HAVE_STRUCT_STATFS_F_FLAGS || HAVE_STRUCT_STATFS64_F_FLAGS */
32 print_statfs_number(const char *const prefix, const unsigned long long number)
35 tprintf("%llu", number);
39 print_struct_statfs(struct tcb *const tcp, const kernel_ulong_t addr)
41 #ifdef HAVE_STRUCT_STATFS
42 struct strace_statfs b;
44 if (!fetch_struct_statfs(tcp, addr, &b))
47 print_statfs_type("{f_type=", b.f_type);
48 print_statfs_number(", f_bsize=", b.f_bsize);
49 print_statfs_number(", f_blocks=", b.f_blocks);
50 print_statfs_number(", f_bfree=", b.f_bfree);
51 print_statfs_number(", f_bavail=", b.f_bavail);
52 print_statfs_number(", f_files=", b.f_files);
53 print_statfs_number(", f_ffree=", b.f_ffree);
54 # if defined HAVE_STRUCT_STATFS_F_FSID_VAL \
55 || defined HAVE_STRUCT_STATFS_F_FSID___VAL
56 print_statfs_number(", f_fsid={val=[", b.f_fsid[0]);
57 print_statfs_number(", ", b.f_fsid[1]);
60 print_statfs_number(", f_namelen=", b.f_namelen);
61 # ifdef HAVE_STRUCT_STATFS_F_FRSIZE
62 print_statfs_number(", f_frsize=", b.f_frsize);
64 # ifdef HAVE_STRUCT_STATFS_F_FLAGS
65 print_statfs_flags(", f_flags=", b.f_flags);
74 print_struct_statfs64(struct tcb *const tcp, const kernel_ulong_t addr,
75 const kernel_ulong_t size)
77 #ifdef HAVE_STRUCT_STATFS64
78 struct strace_statfs b;
80 if (!fetch_struct_statfs64(tcp, addr, size, &b))
83 print_statfs_type("{f_type=", b.f_type);
84 print_statfs_number(", f_bsize=", b.f_bsize);
85 print_statfs_number(", f_blocks=", b.f_blocks);
86 print_statfs_number(", f_bfree=", b.f_bfree);
87 print_statfs_number(", f_bavail=", b.f_bavail);
88 print_statfs_number(", f_files=", b.f_files);
89 print_statfs_number(", f_ffree=", b.f_ffree);
90 # if defined HAVE_STRUCT_STATFS64_F_FSID_VAL \
91 || defined HAVE_STRUCT_STATFS64_F_FSID___VAL
92 print_statfs_number(", f_fsid={val=[", b.f_fsid[0]);
93 print_statfs_number(", ", b.f_fsid[1]);
96 print_statfs_number(", f_namelen=", b.f_namelen);
97 # ifdef HAVE_STRUCT_STATFS64_F_FRSIZE
98 print_statfs_number(", f_frsize=", b.f_frsize);
100 # ifdef HAVE_STRUCT_STATFS64_F_FLAGS
101 print_statfs_flags(", f_flags=", b.f_flags);