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