glibc/include/sys/statfs.h
Adhemerval Zanella 1bfbaf7130 linux: Consolidate fstatfs implementations
The __NR_fstatfs64 syscall is supported on all architectures but
aarch64, mips64, riscv64, and x86_64.  And newer ABIs also uses
the new fstatfs64 interface (where the struct size is used as
first argument).

So the default implementation now uses:

  1. __NR_fstatfs64 for non-LFS call and handle overflow directly
     There is no need to handle __NR_fstatfs since all architectures
     that only support are LFS only.

  2. __NR_fstatfs if defined or __NR_fstatfs64 otherwise for LFS
     call.

Alpha is the only outlier, it is a 64-bit architecture which
provides non-LFS interface and only provides __NR_fstatfs64 on
newer kernels (5.1+).

Checked on x86_64-linux-gnu.

Reviewed-by: Carlos O'Donell <carlos@redhat.com>
2021-02-11 07:58:31 -03:00

17 lines
477 B
C

#ifndef _SYS_STATFS_H
#include <io/sys/statfs.h>
# ifndef _ISOMAC
/* Now define the internal interfaces. */
extern int __statfs (const char *__file, struct statfs *__buf);
libc_hidden_proto (__statfs)
extern int __fstatfs (int __fildes, struct statfs *__buf);
libc_hidden_proto (__fstatfs)
extern int __statfs64 (const char *__file, struct statfs64 *__buf)
attribute_hidden;
extern int __fstatfs64 (int __fildes, struct statfs64 *__buf);
# endif /* !_ISOMAC */
#endif