130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#ifndef __ASM_GENERIC_STAT_H
230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define __ASM_GENERIC_STAT_H
330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/*
530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * Everybody gets this wrong and has to stick with it for all
630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * eternity. Hopefully, this version gets used by new architectures
730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * so they don't fall into the same traps.
830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng *
930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * stat64 is copied from powerpc64, with explicit padding added.
1030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * stat is the same structure layout on 64-bit, without the 'long long'
1130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * types.
1230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng *
1330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * By convention, 64 bit architectures use the stat interface, while
1430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * 32 bit architectures use the stat64 interface. Note that we don't
1530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * provide an __old_kernel_stat here, which new architecture should
1630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * not have to start with.
1730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng */
1830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
1930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#include <asm/bitsperlong.h>
2030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
2130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define STAT_HAVE_NSEC 1
2230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
2330692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct stat {
2430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	unsigned long	st_dev;		/* Device.  */
2530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	unsigned long	st_ino;		/* File serial number.  */
2630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	unsigned int	st_mode;	/* File mode.  */
2730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	unsigned int	st_nlink;	/* Link count.  */
2830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	unsigned int	st_uid;		/* User ID of the file's owner.  */
2930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	unsigned int	st_gid;		/* Group ID of the file's group. */
3030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	unsigned long	st_rdev;	/* Device number, if device.  */
3130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	unsigned long	__pad1;
3230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	long		st_size;	/* Size of file, in bytes.  */
3330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	int		st_blksize;	/* Optimal block size for I/O.  */
3430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	int		__pad2;
3530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	long		st_blocks;	/* Number 512-byte blocks allocated. */
3630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	long		st_atime;	/* Time of last access.  */
3730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	unsigned long	st_atime_nsec;
3830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	long		st_mtime;	/* Time of last modification.  */
3930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	unsigned long	st_mtime_nsec;
4030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	long		st_ctime;	/* Time of last status change.  */
4130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	unsigned long	st_ctime_nsec;
4230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	unsigned int	__unused4;
4330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	unsigned int	__unused5;
4430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
4530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
4630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* This matches struct stat64 in glibc2.1. Only used for 32 bit. */
4730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#if __BITS_PER_LONG != 64 || defined(__ARCH_WANT_STAT64)
4830692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct stat64 {
4930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	unsigned long long st_dev;	/* Device.  */
5030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	unsigned long long st_ino;	/* File serial number.  */
5130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	unsigned int	st_mode;	/* File mode.  */
5230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	unsigned int	st_nlink;	/* Link count.  */
5330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	unsigned int	st_uid;		/* User ID of the file's owner.  */
5430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	unsigned int	st_gid;		/* Group ID of the file's group. */
5530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	unsigned long long st_rdev;	/* Device number, if device.  */
5630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	unsigned long long __pad1;
5730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	long long	st_size;	/* Size of file, in bytes.  */
5830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	int		st_blksize;	/* Optimal block size for I/O.  */
5930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	int		__pad2;
6030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	long long	st_blocks;	/* Number 512-byte blocks allocated. */
6130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	int		st_atime;	/* Time of last access.  */
6230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	unsigned int	st_atime_nsec;
6330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	int		st_mtime;	/* Time of last modification.  */
6430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	unsigned int	st_mtime_nsec;
6530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	int		st_ctime;	/* Time of last status change.  */
6630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	unsigned int	st_ctime_nsec;
6730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	unsigned int	__unused4;
6830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	unsigned int	__unused5;
6930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
7030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#endif
7130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
7230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#endif /* __ASM_GENERIC_STAT_H */
73