glibc/sysdeps/unix/sysv/linux/mips/kernel_stat.h
Adhemerval Zanella 5b980d4809 linux: Use statx for MIPSn64
MIPSn64 kernel ABI for legacy stat uses unsigned 32 bit for second
timestamp, which limits the maximum value to y2106.  This patch
make mips64 use statx as for 32-bit architectures.

Thie __cp_stat64_t64_statx is open coded, its usage is solely on
fstatat64 and it avoid the need to redefine the name for mips64
(which will call __cp_stat64_statx since its does not use
__stat64_t64 internally).
2021-03-29 10:22:13 -03:00

76 lines
1.9 KiB
C

#ifndef _KERNEL_STAT_H
#define _KERNEL_STAT_H
#include <sgidefs.h>
/* As tempting as it is to define XSTAT_IS_XSTAT64 for n64, the
userland data structures are not identical, because of different
padding. */
/* Definition of `struct stat' used in the kernel. */
#if _MIPS_SIM != _ABIO32
struct kernel_stat
{
unsigned int st_dev;
unsigned int __pad1[3];
unsigned long long st_ino;
unsigned int st_mode;
unsigned int st_nlink;
int st_uid;
int st_gid;
unsigned int st_rdev;
unsigned int __pad2[3];
long long st_size;
unsigned int st_atime_sec;
unsigned int st_atime_nsec;
unsigned int st_mtime_sec;
unsigned int st_mtime_nsec;
unsigned int st_ctime_sec;
unsigned int st_ctime_nsec;
unsigned int st_blksize;
unsigned int __pad3;
unsigned long long st_blocks;
};
#else
struct kernel_stat
{
unsigned long int st_dev;
long int __pad1[3]; /* Reserved for network id */
unsigned long int st_ino;
unsigned long int st_mode;
unsigned long int st_nlink;
long int st_uid;
long int st_gid;
unsigned long int st_rdev;
long int __pad2[2];
long int st_size;
long int __pad3;
unsigned int st_atime_sec;
unsigned int st_atime_nsec;
unsigned int st_mtime_sec;
unsigned int st_mtime_nsec;
unsigned int st_ctime_sec;
unsigned int st_ctime_nsec;
long int st_blksize;
long int st_blocks;
char st_fstype[16]; /* Filesystem type name, unsupported */
long st_pad4[8];
/* Linux specific fields */
unsigned int st_flags;
unsigned int st_gen;
};
#endif
#define STAT_IS_KERNEL_STAT 0
#define STAT64_IS_KERNEL_STAT64 0
#define XSTAT_IS_XSTAT64 0
#if _MIPS_SIM == _ABI64
# define STATFS_IS_STATFS64 1
#else
# define STATFS_IS_STATFS64 0
#endif
/* MIPS64 has unsigned 32 bit timestamps fields, so use statx as well. */
#if _MIPS_SIM == _ABI64
# define STAT_HAS_TIME32
#endif
#endif