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