1#ifndef _ASM_STAT_H
2#define _ASM_STAT_H
3
4#include <linux/types.h>
5
6struct stat {
7	dev_t		st_dev;
8	long		st_pad1[3];		/* Reserved for network id */
9	ino_t		st_ino;
10	mode_t		st_mode;
11	nlink_t		st_nlink;
12	uid_t		st_uid;
13	gid_t		st_gid;
14	dev_t		st_rdev;
15	long		st_pad2[2];
16	off_t		st_size;
17	long		st_pad3;
18	/*
19	 * Actually this should be timestruc_t st_atime, st_mtime and st_ctime
20	 * but we don't have it under Linux.
21	 */
22	time_t		st_atime;
23	long		reserved0;
24	time_t		st_mtime;
25	long		reserved1;
26	time_t		st_ctime;
27	long		reserved2;
28	long		st_blksize;
29	long		st_blocks;
30	long		st_pad4[14];
31};
32
33/*
34 * This matches struct stat64 in glibc2.1, hence the absolutely insane
35 * amounts of padding around dev_t's.  The memory layout is the same as of
36 * struct stat of the 64-bit kernel.
37 */
38
39struct stat64 {
40	unsigned long	st_dev;
41	unsigned long	st_pad0[3];	/* Reserved for st_dev expansion  */
42
43	unsigned long long	st_ino;
44
45	mode_t		st_mode;
46	nlink_t		st_nlink;
47
48	uid_t		st_uid;
49	gid_t		st_gid;
50
51	unsigned long	st_rdev;
52	unsigned long	st_pad1[3];	/* Reserved for st_rdev expansion  */
53
54	long long	st_size;
55
56	/*
57	 * Actually this should be timestruc_t st_atime, st_mtime and st_ctime
58	 * but we don't have it under Linux.
59	 */
60	time_t		st_atime;
61	unsigned long	reserved0;	/* Reserved for st_atime expansion  */
62
63	time_t		st_mtime;
64	unsigned long	reserved1;	/* Reserved for st_mtime expansion  */
65
66	time_t		st_ctime;
67	unsigned long	reserved2;	/* Reserved for st_ctime expansion  */
68
69	unsigned long	st_blksize;
70	unsigned long	st_pad2;
71
72	long long	st_blocks;
73};
74
75#endif /* _ASM_STAT_H */
76