Merge master.kernel.org:/home/rmk/linux-2.6-arm
[linux-2.6] / include / asm-mips / stat.h
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 */
21         ino_t           st_ino;
22         mode_t          st_mode;
23         nlink_t         st_nlink;
24         uid_t           st_uid;
25         gid_t           st_gid;
26         unsigned        st_rdev;
27         long            st_pad2[2];
28         off_t           st_size;
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          */
34         time_t          st_atime;
35         long            st_atime_nsec;
36         time_t          st_mtime;
37         long            st_mtime_nsec;
38         time_t          st_ctime;
39         long            st_ctime_nsec;
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
57         mode_t          st_mode;
58         nlink_t         st_nlink;
59
60         uid_t           st_uid;
61         gid_t           st_gid;
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          */
72         time_t          st_atime;
73         unsigned long   st_atime_nsec;  /* Reserved for st_atime expansion  */
74
75         time_t          st_mtime;
76         unsigned long   st_mtime_nsec;  /* Reserved for st_mtime expansion  */
77
78         time_t          st_ctime;
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
98         mode_t                  st_mode;
99         nlink_t                 st_nlink;
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 */