1633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham/* 2633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham * This file is subject to the terms and conditions of the GNU General Public 3633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham * License. See the file "COPYING" in the main directory of this archive 4633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham * for more details. 5633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham * 6633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham * Copyright (C) 1995, 1999, 2000 Ralf Baechle 7633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham * Copyright (C) 2000 Silicon Graphics, Inc. 8633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham */ 9633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#ifndef _ASM_STAT_H 10633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define _ASM_STAT_H 11633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham 12633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#include <linux/types.h> 13633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham 14633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#include <asm/sgidefs.h> 15633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham 16633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#if (_MIPS_SIM == _MIPS_SIM_ABI32) || (_MIPS_SIM == _MIPS_SIM_NABI32) 17633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham 18633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandhamstruct stat { 19633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham unsigned st_dev; 20633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham long st_pad1[3]; /* Reserved for network id */ 21633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham ino_t st_ino; 22633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham mode_t st_mode; 23633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham nlink_t st_nlink; 24633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham uid_t st_uid; 25633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham gid_t st_gid; 26633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham unsigned st_rdev; 27633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham long st_pad2[2]; 28633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham off_t st_size; 29633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham long st_pad3; 30633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham /* 31633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham * Actually this should be timestruc_t st_atime, st_mtime and st_ctime 32633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham * but we don't have it under Linux. 33633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham */ 34633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham time_t st_atime; 35633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham long st_atime_nsec; 36633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham time_t st_mtime; 37633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham long st_mtime_nsec; 38633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham time_t st_ctime; 39633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham long st_ctime_nsec; 40633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham long st_blksize; 41633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham long st_blocks; 42633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham long st_pad4[14]; 43633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham}; 44633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham 45633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham/* 46633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham * This matches struct stat64 in glibc2.1, hence the absolutely insane 47633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham * amounts of padding around dev_t's. The memory layout is the same as of 48633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham * struct stat of the 64-bit kernel. 49633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham */ 50633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham 51633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandhamstruct stat64 { 52633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham unsigned long st_dev; 53633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham unsigned long st_pad0[3]; /* Reserved for st_dev expansion */ 54633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham 55633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham unsigned long long st_ino; 56633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham 57633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham mode_t st_mode; 58633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham nlink_t st_nlink; 59633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham 60633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham uid_t st_uid; 61633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham gid_t st_gid; 62633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham 63633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham unsigned long st_rdev; 64633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham unsigned long st_pad1[3]; /* Reserved for st_rdev expansion */ 65633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham 66633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham long long st_size; 67633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham 68633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham /* 69633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham * Actually this should be timestruc_t st_atime, st_mtime and st_ctime 70633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham * but we don't have it under Linux. 71633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham */ 72633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham time_t st_atime; 73633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham unsigned long st_atime_nsec; /* Reserved for st_atime expansion */ 74633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham 75633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham time_t st_mtime; 76633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham unsigned long st_mtime_nsec; /* Reserved for st_mtime expansion */ 77633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham 78633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham time_t st_ctime; 79633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham unsigned long st_ctime_nsec; /* Reserved for st_ctime expansion */ 80633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham 81633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham unsigned long st_blksize; 82633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham unsigned long st_pad2; 83633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham 84633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham long long st_blocks; 85633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham}; 86633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham 87633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#endif /* _MIPS_SIM == _MIPS_SIM_ABI32 */ 88633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham 89633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#if _MIPS_SIM == _MIPS_SIM_ABI64 90633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham 91633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham/* The memory layout is the same as of struct stat64 of the 32-bit kernel. */ 92633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandhamstruct stat { 93633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham unsigned int st_dev; 94633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham unsigned int st_pad0[3]; /* Reserved for st_dev expansion */ 95633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham 96633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham unsigned long st_ino; 97633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham 98633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham mode_t st_mode; 99633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham nlink_t st_nlink; 100633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham 101633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham uid_t st_uid; 102633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham gid_t st_gid; 103633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham 104633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham unsigned int st_rdev; 105633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham unsigned int st_pad1[3]; /* Reserved for st_rdev expansion */ 106633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham 107633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham off_t st_size; 108633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham 109633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham /* 110633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham * Actually this should be timestruc_t st_atime, st_mtime and st_ctime 111633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham * but we don't have it under Linux. 112633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham */ 113633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham unsigned int st_atime; 114633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham unsigned int st_atime_nsec; 115633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham 116633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham unsigned int st_mtime; 117633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham unsigned int st_mtime_nsec; 118633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham 119633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham unsigned int st_ctime; 120633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham unsigned int st_ctime_nsec; 121633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham 122633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham unsigned int st_blksize; 123633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham unsigned int st_pad2; 124633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham 125633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham unsigned long st_blocks; 126633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham}; 127633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham 128633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#endif /* _MIPS_SIM == _MIPS_SIM_ABI64 */ 129633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham 130633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define STAT_HAVE_NSEC 1 131633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham 132633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#endif /* _ASM_STAT_H */ 133