1198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris/*
2198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris * This file is subject to the terms and conditions of the GNU General Public
3198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris * License.  See the file "COPYING" in the main directory of this archive
4198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris * for more details.
5198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris *
6198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris * Copyright (C) 1995, 1999, 2000 Ralf Baechle
7198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris * Copyright (C) 2000 Silicon Graphics, Inc.
8198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris */
9198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris#ifndef _ASM_STAT_H
10198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris#define _ASM_STAT_H
11198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris
12198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris#include <linux/types.h>
13198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris
14198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris#include <asm/sgidefs.h>
15198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris
16198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris#if (_MIPS_SIM == _MIPS_SIM_ABI32) || (_MIPS_SIM == _MIPS_SIM_NABI32)
17198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris
18198084289b68143fd4ea72dec91515eec00d700fChristopher Ferrisstruct stat {
19198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris	unsigned	st_dev;
20198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris	long		st_pad1[3];		/* Reserved for network id */
21198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris	ino_t		st_ino;
22198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris	mode_t		st_mode;
23198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris	__u32		st_nlink;
24198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris	uid_t		st_uid;
25198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris	gid_t		st_gid;
26198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris	unsigned	st_rdev;
27198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris	long		st_pad2[2];
28198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris	off_t		st_size;
29198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris	long		st_pad3;
30198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris	/*
31198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris	 * Actually this should be timestruc_t st_atime, st_mtime and st_ctime
32198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris	 * but we don't have it under Linux.
33198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris	 */
34198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris	time_t		st_atime;
35198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris	long		st_atime_nsec;
36198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris	time_t		st_mtime;
37198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris	long		st_mtime_nsec;
38198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris	time_t		st_ctime;
39198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris	long		st_ctime_nsec;
40198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris	long		st_blksize;
41198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris	long		st_blocks;
42198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris	long		st_pad4[14];
43198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris};
44198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris
45198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris/*
46198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris * This matches struct stat64 in glibc2.1, hence the absolutely insane
47198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris * amounts of padding around dev_t's.  The memory layout is the same as of
48198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris * struct stat of the 64-bit kernel.
49198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris */
50198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris
51198084289b68143fd4ea72dec91515eec00d700fChristopher Ferrisstruct stat64 {
52198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris	unsigned long	st_dev;
53198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris	unsigned long	st_pad0[3];	/* Reserved for st_dev expansion  */
54198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris
55198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris	unsigned long long	st_ino;
56198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris
57198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris	mode_t		st_mode;
58198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris	__u32		st_nlink;
59198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris
60198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris	uid_t		st_uid;
61198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris	gid_t		st_gid;
62198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris
63198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris	unsigned long	st_rdev;
64198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris	unsigned long	st_pad1[3];	/* Reserved for st_rdev expansion  */
65198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris
66198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris	long long	st_size;
67198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris
68198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris	/*
69198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris	 * Actually this should be timestruc_t st_atime, st_mtime and st_ctime
70198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris	 * but we don't have it under Linux.
71198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris	 */
72198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris	time_t		st_atime;
73198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris	unsigned long	st_atime_nsec;	/* Reserved for st_atime expansion  */
74198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris
75198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris	time_t		st_mtime;
76198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris	unsigned long	st_mtime_nsec;	/* Reserved for st_mtime expansion  */
77198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris
78198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris	time_t		st_ctime;
79198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris	unsigned long	st_ctime_nsec;	/* Reserved for st_ctime expansion  */
80198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris
81198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris	unsigned long	st_blksize;
82198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris	unsigned long	st_pad2;
83198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris
84198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris	long long	st_blocks;
85198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris};
86198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris
87198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris#endif /* _MIPS_SIM == _MIPS_SIM_ABI32 */
88198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris
89198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris#if _MIPS_SIM == _MIPS_SIM_ABI64
90198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris
91198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris/* The memory layout is the same as of struct stat64 of the 32-bit kernel.  */
92198084289b68143fd4ea72dec91515eec00d700fChristopher Ferrisstruct stat {
93198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris	unsigned int		st_dev;
94198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris	unsigned int		st_pad0[3]; /* Reserved for st_dev expansion */
95198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris
96198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris	unsigned long		st_ino;
97198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris
98198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris	mode_t			st_mode;
99198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris	__u32			st_nlink;
100198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris
101198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris	uid_t			st_uid;
102198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris	gid_t			st_gid;
103198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris
104198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris	unsigned int		st_rdev;
105198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris	unsigned int		st_pad1[3]; /* Reserved for st_rdev expansion */
106198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris
107198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris	off_t			st_size;
108198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris
109198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris	/*
110198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris	 * Actually this should be timestruc_t st_atime, st_mtime and st_ctime
111198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris	 * but we don't have it under Linux.
112198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris	 */
113198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris	unsigned int		st_atime;
114198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris	unsigned int		st_atime_nsec;
115198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris
116198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris	unsigned int		st_mtime;
117198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris	unsigned int		st_mtime_nsec;
118198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris
119198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris	unsigned int		st_ctime;
120198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris	unsigned int		st_ctime_nsec;
121198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris
122198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris	unsigned int		st_blksize;
123198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris	unsigned int		st_pad2;
124198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris
125198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris	unsigned long		st_blocks;
126198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris};
127198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris
128198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris#endif /* _MIPS_SIM == _MIPS_SIM_ABI64 */
129198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris
130198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris#define STAT_HAVE_NSEC 1
131198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris
132198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris#endif /* _ASM_STAT_H */
133