1*53ee8cc1Swenshuai.xi /* 2*53ee8cc1Swenshuai.xi * This file is subject to the terms and conditions of the GNU General Public 3*53ee8cc1Swenshuai.xi * License. See the file "COPYING" in the main directory of this archive 4*53ee8cc1Swenshuai.xi * for more details. 5*53ee8cc1Swenshuai.xi * 6*53ee8cc1Swenshuai.xi * Copyright (C) 1995, 1999, 2000 Ralf Baechle 7*53ee8cc1Swenshuai.xi * Copyright (C) 2000 Silicon Graphics, Inc. 8*53ee8cc1Swenshuai.xi */ 9*53ee8cc1Swenshuai.xi #ifndef _ASM_STAT_H 10*53ee8cc1Swenshuai.xi #define _ASM_STAT_H 11*53ee8cc1Swenshuai.xi 12*53ee8cc1Swenshuai.xi #include <linux/types.h> 13*53ee8cc1Swenshuai.xi 14*53ee8cc1Swenshuai.xi #include <asm/sgidefs.h> 15*53ee8cc1Swenshuai.xi 16*53ee8cc1Swenshuai.xi #if (_MIPS_SIM == _MIPS_SIM_ABI32) || (_MIPS_SIM == _MIPS_SIM_NABI32) 17*53ee8cc1Swenshuai.xi 18*53ee8cc1Swenshuai.xi struct stat { 19*53ee8cc1Swenshuai.xi unsigned st_dev; 20*53ee8cc1Swenshuai.xi long st_pad1[3]; /* Reserved for network id */ 21*53ee8cc1Swenshuai.xi ino_t st_ino; 22*53ee8cc1Swenshuai.xi mode_t st_mode; 23*53ee8cc1Swenshuai.xi nlink_t st_nlink; 24*53ee8cc1Swenshuai.xi uid_t st_uid; 25*53ee8cc1Swenshuai.xi gid_t st_gid; 26*53ee8cc1Swenshuai.xi unsigned st_rdev; 27*53ee8cc1Swenshuai.xi long st_pad2[2]; 28*53ee8cc1Swenshuai.xi off_t st_size; 29*53ee8cc1Swenshuai.xi long st_pad3; 30*53ee8cc1Swenshuai.xi /* 31*53ee8cc1Swenshuai.xi * Actually this should be timestruc_t st_atime, st_mtime and st_ctime 32*53ee8cc1Swenshuai.xi * but we don't have it under Linux. 33*53ee8cc1Swenshuai.xi */ 34*53ee8cc1Swenshuai.xi time_t st_atime; 35*53ee8cc1Swenshuai.xi long st_atime_nsec; 36*53ee8cc1Swenshuai.xi time_t st_mtime; 37*53ee8cc1Swenshuai.xi long st_mtime_nsec; 38*53ee8cc1Swenshuai.xi time_t st_ctime; 39*53ee8cc1Swenshuai.xi long st_ctime_nsec; 40*53ee8cc1Swenshuai.xi long st_blksize; 41*53ee8cc1Swenshuai.xi long st_blocks; 42*53ee8cc1Swenshuai.xi long st_pad4[14]; 43*53ee8cc1Swenshuai.xi }; 44*53ee8cc1Swenshuai.xi 45*53ee8cc1Swenshuai.xi /* 46*53ee8cc1Swenshuai.xi * This matches struct stat64 in glibc2.1, hence the absolutely insane 47*53ee8cc1Swenshuai.xi * amounts of padding around dev_t's. The memory layout is the same as of 48*53ee8cc1Swenshuai.xi * struct stat of the 64-bit kernel. 49*53ee8cc1Swenshuai.xi */ 50*53ee8cc1Swenshuai.xi 51*53ee8cc1Swenshuai.xi struct stat64 { 52*53ee8cc1Swenshuai.xi unsigned long st_dev; 53*53ee8cc1Swenshuai.xi unsigned long st_pad0[3]; /* Reserved for st_dev expansion */ 54*53ee8cc1Swenshuai.xi 55*53ee8cc1Swenshuai.xi unsigned long long st_ino; 56*53ee8cc1Swenshuai.xi 57*53ee8cc1Swenshuai.xi mode_t st_mode; 58*53ee8cc1Swenshuai.xi nlink_t st_nlink; 59*53ee8cc1Swenshuai.xi 60*53ee8cc1Swenshuai.xi uid_t st_uid; 61*53ee8cc1Swenshuai.xi gid_t st_gid; 62*53ee8cc1Swenshuai.xi 63*53ee8cc1Swenshuai.xi unsigned long st_rdev; 64*53ee8cc1Swenshuai.xi unsigned long st_pad1[3]; /* Reserved for st_rdev expansion */ 65*53ee8cc1Swenshuai.xi 66*53ee8cc1Swenshuai.xi long long st_size; 67*53ee8cc1Swenshuai.xi 68*53ee8cc1Swenshuai.xi /* 69*53ee8cc1Swenshuai.xi * Actually this should be timestruc_t st_atime, st_mtime and st_ctime 70*53ee8cc1Swenshuai.xi * but we don't have it under Linux. 71*53ee8cc1Swenshuai.xi */ 72*53ee8cc1Swenshuai.xi time_t st_atime; 73*53ee8cc1Swenshuai.xi unsigned long st_atime_nsec; /* Reserved for st_atime expansion */ 74*53ee8cc1Swenshuai.xi 75*53ee8cc1Swenshuai.xi time_t st_mtime; 76*53ee8cc1Swenshuai.xi unsigned long st_mtime_nsec; /* Reserved for st_mtime expansion */ 77*53ee8cc1Swenshuai.xi 78*53ee8cc1Swenshuai.xi time_t st_ctime; 79*53ee8cc1Swenshuai.xi unsigned long st_ctime_nsec; /* Reserved for st_ctime expansion */ 80*53ee8cc1Swenshuai.xi 81*53ee8cc1Swenshuai.xi unsigned long st_blksize; 82*53ee8cc1Swenshuai.xi unsigned long st_pad2; 83*53ee8cc1Swenshuai.xi 84*53ee8cc1Swenshuai.xi long long st_blocks; 85*53ee8cc1Swenshuai.xi }; 86*53ee8cc1Swenshuai.xi 87*53ee8cc1Swenshuai.xi #endif /* _MIPS_SIM == _MIPS_SIM_ABI32 */ 88*53ee8cc1Swenshuai.xi 89*53ee8cc1Swenshuai.xi #if _MIPS_SIM == _MIPS_SIM_ABI64 90*53ee8cc1Swenshuai.xi 91*53ee8cc1Swenshuai.xi /* The memory layout is the same as of struct stat64 of the 32-bit kernel. */ 92*53ee8cc1Swenshuai.xi struct stat { 93*53ee8cc1Swenshuai.xi unsigned int st_dev; 94*53ee8cc1Swenshuai.xi unsigned int st_pad0[3]; /* Reserved for st_dev expansion */ 95*53ee8cc1Swenshuai.xi 96*53ee8cc1Swenshuai.xi unsigned long st_ino; 97*53ee8cc1Swenshuai.xi 98*53ee8cc1Swenshuai.xi mode_t st_mode; 99*53ee8cc1Swenshuai.xi nlink_t st_nlink; 100*53ee8cc1Swenshuai.xi 101*53ee8cc1Swenshuai.xi uid_t st_uid; 102*53ee8cc1Swenshuai.xi gid_t st_gid; 103*53ee8cc1Swenshuai.xi 104*53ee8cc1Swenshuai.xi unsigned int st_rdev; 105*53ee8cc1Swenshuai.xi unsigned int st_pad1[3]; /* Reserved for st_rdev expansion */ 106*53ee8cc1Swenshuai.xi 107*53ee8cc1Swenshuai.xi off_t st_size; 108*53ee8cc1Swenshuai.xi 109*53ee8cc1Swenshuai.xi /* 110*53ee8cc1Swenshuai.xi * Actually this should be timestruc_t st_atime, st_mtime and st_ctime 111*53ee8cc1Swenshuai.xi * but we don't have it under Linux. 112*53ee8cc1Swenshuai.xi */ 113*53ee8cc1Swenshuai.xi unsigned int st_atime; 114*53ee8cc1Swenshuai.xi unsigned int st_atime_nsec; 115*53ee8cc1Swenshuai.xi 116*53ee8cc1Swenshuai.xi unsigned int st_mtime; 117*53ee8cc1Swenshuai.xi unsigned int st_mtime_nsec; 118*53ee8cc1Swenshuai.xi 119*53ee8cc1Swenshuai.xi unsigned int st_ctime; 120*53ee8cc1Swenshuai.xi unsigned int st_ctime_nsec; 121*53ee8cc1Swenshuai.xi 122*53ee8cc1Swenshuai.xi unsigned int st_blksize; 123*53ee8cc1Swenshuai.xi unsigned int st_pad2; 124*53ee8cc1Swenshuai.xi 125*53ee8cc1Swenshuai.xi unsigned long st_blocks; 126*53ee8cc1Swenshuai.xi }; 127*53ee8cc1Swenshuai.xi 128*53ee8cc1Swenshuai.xi #endif /* _MIPS_SIM == _MIPS_SIM_ABI64 */ 129*53ee8cc1Swenshuai.xi 130*53ee8cc1Swenshuai.xi #define STAT_HAVE_NSEC 1 131*53ee8cc1Swenshuai.xi 132*53ee8cc1Swenshuai.xi #endif /* _ASM_STAT_H */ 133