1*f80ad8b4SAndroid Build Coastguard Worker /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ 2*f80ad8b4SAndroid Build Coastguard Worker #ifndef __ASM_GENERIC_STAT_H 3*f80ad8b4SAndroid Build Coastguard Worker #define __ASM_GENERIC_STAT_H 4*f80ad8b4SAndroid Build Coastguard Worker 5*f80ad8b4SAndroid Build Coastguard Worker /* 6*f80ad8b4SAndroid Build Coastguard Worker * Everybody gets this wrong and has to stick with it for all 7*f80ad8b4SAndroid Build Coastguard Worker * eternity. Hopefully, this version gets used by new architectures 8*f80ad8b4SAndroid Build Coastguard Worker * so they don't fall into the same traps. 9*f80ad8b4SAndroid Build Coastguard Worker * 10*f80ad8b4SAndroid Build Coastguard Worker * stat64 is copied from powerpc64, with explicit padding added. 11*f80ad8b4SAndroid Build Coastguard Worker * stat is the same structure layout on 64-bit, without the 'long long' 12*f80ad8b4SAndroid Build Coastguard Worker * types. 13*f80ad8b4SAndroid Build Coastguard Worker * 14*f80ad8b4SAndroid Build Coastguard Worker * By convention, 64 bit architectures use the stat interface, while 15*f80ad8b4SAndroid Build Coastguard Worker * 32 bit architectures use the stat64 interface. Note that we don't 16*f80ad8b4SAndroid Build Coastguard Worker * provide an __old_kernel_stat here, which new architecture should 17*f80ad8b4SAndroid Build Coastguard Worker * not have to start with. 18*f80ad8b4SAndroid Build Coastguard Worker */ 19*f80ad8b4SAndroid Build Coastguard Worker 20*f80ad8b4SAndroid Build Coastguard Worker #include <asm/bitsperlong.h> 21*f80ad8b4SAndroid Build Coastguard Worker 22*f80ad8b4SAndroid Build Coastguard Worker #define STAT_HAVE_NSEC 1 23*f80ad8b4SAndroid Build Coastguard Worker 24*f80ad8b4SAndroid Build Coastguard Worker struct stat { 25*f80ad8b4SAndroid Build Coastguard Worker unsigned long st_dev; /* Device. */ 26*f80ad8b4SAndroid Build Coastguard Worker unsigned long st_ino; /* File serial number. */ 27*f80ad8b4SAndroid Build Coastguard Worker unsigned int st_mode; /* File mode. */ 28*f80ad8b4SAndroid Build Coastguard Worker unsigned int st_nlink; /* Link count. */ 29*f80ad8b4SAndroid Build Coastguard Worker unsigned int st_uid; /* User ID of the file's owner. */ 30*f80ad8b4SAndroid Build Coastguard Worker unsigned int st_gid; /* Group ID of the file's group. */ 31*f80ad8b4SAndroid Build Coastguard Worker unsigned long st_rdev; /* Device number, if device. */ 32*f80ad8b4SAndroid Build Coastguard Worker unsigned long __pad1; 33*f80ad8b4SAndroid Build Coastguard Worker long st_size; /* Size of file, in bytes. */ 34*f80ad8b4SAndroid Build Coastguard Worker int st_blksize; /* Optimal block size for I/O. */ 35*f80ad8b4SAndroid Build Coastguard Worker int __pad2; 36*f80ad8b4SAndroid Build Coastguard Worker long st_blocks; /* Number 512-byte blocks allocated. */ 37*f80ad8b4SAndroid Build Coastguard Worker long st_atime; /* Time of last access. */ 38*f80ad8b4SAndroid Build Coastguard Worker unsigned long st_atime_nsec; 39*f80ad8b4SAndroid Build Coastguard Worker long st_mtime; /* Time of last modification. */ 40*f80ad8b4SAndroid Build Coastguard Worker unsigned long st_mtime_nsec; 41*f80ad8b4SAndroid Build Coastguard Worker long st_ctime; /* Time of last status change. */ 42*f80ad8b4SAndroid Build Coastguard Worker unsigned long st_ctime_nsec; 43*f80ad8b4SAndroid Build Coastguard Worker unsigned int __unused4; 44*f80ad8b4SAndroid Build Coastguard Worker unsigned int __unused5; 45*f80ad8b4SAndroid Build Coastguard Worker }; 46*f80ad8b4SAndroid Build Coastguard Worker 47*f80ad8b4SAndroid Build Coastguard Worker /* This matches struct stat64 in glibc2.1. Only used for 32 bit. */ 48*f80ad8b4SAndroid Build Coastguard Worker #if __BITS_PER_LONG != 64 || defined(__ARCH_WANT_STAT64) 49*f80ad8b4SAndroid Build Coastguard Worker struct stat64 { 50*f80ad8b4SAndroid Build Coastguard Worker unsigned long long st_dev; /* Device. */ 51*f80ad8b4SAndroid Build Coastguard Worker unsigned long long st_ino; /* File serial number. */ 52*f80ad8b4SAndroid Build Coastguard Worker unsigned int st_mode; /* File mode. */ 53*f80ad8b4SAndroid Build Coastguard Worker unsigned int st_nlink; /* Link count. */ 54*f80ad8b4SAndroid Build Coastguard Worker unsigned int st_uid; /* User ID of the file's owner. */ 55*f80ad8b4SAndroid Build Coastguard Worker unsigned int st_gid; /* Group ID of the file's group. */ 56*f80ad8b4SAndroid Build Coastguard Worker unsigned long long st_rdev; /* Device number, if device. */ 57*f80ad8b4SAndroid Build Coastguard Worker unsigned long long __pad1; 58*f80ad8b4SAndroid Build Coastguard Worker long long st_size; /* Size of file, in bytes. */ 59*f80ad8b4SAndroid Build Coastguard Worker int st_blksize; /* Optimal block size for I/O. */ 60*f80ad8b4SAndroid Build Coastguard Worker int __pad2; 61*f80ad8b4SAndroid Build Coastguard Worker long long st_blocks; /* Number 512-byte blocks allocated. */ 62*f80ad8b4SAndroid Build Coastguard Worker int st_atime; /* Time of last access. */ 63*f80ad8b4SAndroid Build Coastguard Worker unsigned int st_atime_nsec; 64*f80ad8b4SAndroid Build Coastguard Worker int st_mtime; /* Time of last modification. */ 65*f80ad8b4SAndroid Build Coastguard Worker unsigned int st_mtime_nsec; 66*f80ad8b4SAndroid Build Coastguard Worker int st_ctime; /* Time of last status change. */ 67*f80ad8b4SAndroid Build Coastguard Worker unsigned int st_ctime_nsec; 68*f80ad8b4SAndroid Build Coastguard Worker unsigned int __unused4; 69*f80ad8b4SAndroid Build Coastguard Worker unsigned int __unused5; 70*f80ad8b4SAndroid Build Coastguard Worker }; 71*f80ad8b4SAndroid Build Coastguard Worker #endif 72*f80ad8b4SAndroid Build Coastguard Worker 73*f80ad8b4SAndroid Build Coastguard Worker #endif /* __ASM_GENERIC_STAT_H */ 74