xref: /OK3568_Linux_fs/kernel/arch/mips/include/uapi/asm/stat.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
2*4882a593Smuzhiyun /*
3*4882a593Smuzhiyun  * This file is subject to the terms and conditions of the GNU General Public
4*4882a593Smuzhiyun  * License.  See the file "COPYING" in the main directory of this archive
5*4882a593Smuzhiyun  * for more details.
6*4882a593Smuzhiyun  *
7*4882a593Smuzhiyun  * Copyright (C) 1995, 1999, 2000 Ralf Baechle
8*4882a593Smuzhiyun  * Copyright (C) 2000 Silicon Graphics, Inc.
9*4882a593Smuzhiyun  */
10*4882a593Smuzhiyun #ifndef _ASM_STAT_H
11*4882a593Smuzhiyun #define _ASM_STAT_H
12*4882a593Smuzhiyun 
13*4882a593Smuzhiyun #include <linux/types.h>
14*4882a593Smuzhiyun 
15*4882a593Smuzhiyun #include <asm/sgidefs.h>
16*4882a593Smuzhiyun 
17*4882a593Smuzhiyun #if (_MIPS_SIM == _MIPS_SIM_ABI32) || (_MIPS_SIM == _MIPS_SIM_NABI32)
18*4882a593Smuzhiyun 
19*4882a593Smuzhiyun struct stat {
20*4882a593Smuzhiyun 	unsigned	st_dev;
21*4882a593Smuzhiyun 	long		st_pad1[3];		/* Reserved for network id */
22*4882a593Smuzhiyun 	ino_t		st_ino;
23*4882a593Smuzhiyun 	mode_t		st_mode;
24*4882a593Smuzhiyun 	__u32		st_nlink;
25*4882a593Smuzhiyun 	uid_t		st_uid;
26*4882a593Smuzhiyun 	gid_t		st_gid;
27*4882a593Smuzhiyun 	unsigned	st_rdev;
28*4882a593Smuzhiyun 	long		st_pad2[2];
29*4882a593Smuzhiyun 	long		st_size;
30*4882a593Smuzhiyun 	long		st_pad3;
31*4882a593Smuzhiyun 	/*
32*4882a593Smuzhiyun 	 * Actually this should be timestruc_t st_atime, st_mtime and st_ctime
33*4882a593Smuzhiyun 	 * but we don't have it under Linux.
34*4882a593Smuzhiyun 	 */
35*4882a593Smuzhiyun 	long		st_atime;
36*4882a593Smuzhiyun 	long		st_atime_nsec;
37*4882a593Smuzhiyun 	long		st_mtime;
38*4882a593Smuzhiyun 	long		st_mtime_nsec;
39*4882a593Smuzhiyun 	long		st_ctime;
40*4882a593Smuzhiyun 	long		st_ctime_nsec;
41*4882a593Smuzhiyun 	long		st_blksize;
42*4882a593Smuzhiyun 	long		st_blocks;
43*4882a593Smuzhiyun 	long		st_pad4[14];
44*4882a593Smuzhiyun };
45*4882a593Smuzhiyun 
46*4882a593Smuzhiyun /*
47*4882a593Smuzhiyun  * This matches struct stat64 in glibc2.1, hence the absolutely insane
48*4882a593Smuzhiyun  * amounts of padding around dev_t's.  The memory layout is the same as of
49*4882a593Smuzhiyun  * struct stat of the 64-bit kernel.
50*4882a593Smuzhiyun  */
51*4882a593Smuzhiyun 
52*4882a593Smuzhiyun struct stat64 {
53*4882a593Smuzhiyun 	unsigned long	st_dev;
54*4882a593Smuzhiyun 	unsigned long	st_pad0[3];	/* Reserved for st_dev expansion  */
55*4882a593Smuzhiyun 
56*4882a593Smuzhiyun 	unsigned long long	st_ino;
57*4882a593Smuzhiyun 
58*4882a593Smuzhiyun 	mode_t		st_mode;
59*4882a593Smuzhiyun 	__u32		st_nlink;
60*4882a593Smuzhiyun 
61*4882a593Smuzhiyun 	uid_t		st_uid;
62*4882a593Smuzhiyun 	gid_t		st_gid;
63*4882a593Smuzhiyun 
64*4882a593Smuzhiyun 	unsigned long	st_rdev;
65*4882a593Smuzhiyun 	unsigned long	st_pad1[3];	/* Reserved for st_rdev expansion  */
66*4882a593Smuzhiyun 
67*4882a593Smuzhiyun 	long long	st_size;
68*4882a593Smuzhiyun 
69*4882a593Smuzhiyun 	/*
70*4882a593Smuzhiyun 	 * Actually this should be timestruc_t st_atime, st_mtime and st_ctime
71*4882a593Smuzhiyun 	 * but we don't have it under Linux.
72*4882a593Smuzhiyun 	 */
73*4882a593Smuzhiyun 	long		st_atime;
74*4882a593Smuzhiyun 	unsigned long	st_atime_nsec;	/* Reserved for st_atime expansion  */
75*4882a593Smuzhiyun 
76*4882a593Smuzhiyun 	long		st_mtime;
77*4882a593Smuzhiyun 	unsigned long	st_mtime_nsec;	/* Reserved for st_mtime expansion  */
78*4882a593Smuzhiyun 
79*4882a593Smuzhiyun 	long		st_ctime;
80*4882a593Smuzhiyun 	unsigned long	st_ctime_nsec;	/* Reserved for st_ctime expansion  */
81*4882a593Smuzhiyun 
82*4882a593Smuzhiyun 	unsigned long	st_blksize;
83*4882a593Smuzhiyun 	unsigned long	st_pad2;
84*4882a593Smuzhiyun 
85*4882a593Smuzhiyun 	long long	st_blocks;
86*4882a593Smuzhiyun };
87*4882a593Smuzhiyun 
88*4882a593Smuzhiyun #endif /* _MIPS_SIM == _MIPS_SIM_ABI32 */
89*4882a593Smuzhiyun 
90*4882a593Smuzhiyun #if _MIPS_SIM == _MIPS_SIM_ABI64
91*4882a593Smuzhiyun 
92*4882a593Smuzhiyun /* The memory layout is the same as of struct stat64 of the 32-bit kernel.  */
93*4882a593Smuzhiyun struct stat {
94*4882a593Smuzhiyun 	unsigned int		st_dev;
95*4882a593Smuzhiyun 	unsigned int		st_pad0[3]; /* Reserved for st_dev expansion */
96*4882a593Smuzhiyun 
97*4882a593Smuzhiyun 	unsigned long		st_ino;
98*4882a593Smuzhiyun 
99*4882a593Smuzhiyun 	mode_t			st_mode;
100*4882a593Smuzhiyun 	__u32			st_nlink;
101*4882a593Smuzhiyun 
102*4882a593Smuzhiyun 	uid_t			st_uid;
103*4882a593Smuzhiyun 	gid_t			st_gid;
104*4882a593Smuzhiyun 
105*4882a593Smuzhiyun 	unsigned int		st_rdev;
106*4882a593Smuzhiyun 	unsigned int		st_pad1[3]; /* Reserved for st_rdev expansion */
107*4882a593Smuzhiyun 
108*4882a593Smuzhiyun 	long			st_size;
109*4882a593Smuzhiyun 
110*4882a593Smuzhiyun 	/*
111*4882a593Smuzhiyun 	 * Actually this should be timestruc_t st_atime, st_mtime and st_ctime
112*4882a593Smuzhiyun 	 * but we don't have it under Linux.
113*4882a593Smuzhiyun 	 */
114*4882a593Smuzhiyun 	unsigned int		st_atime;
115*4882a593Smuzhiyun 	unsigned int		st_atime_nsec;
116*4882a593Smuzhiyun 
117*4882a593Smuzhiyun 	unsigned int		st_mtime;
118*4882a593Smuzhiyun 	unsigned int		st_mtime_nsec;
119*4882a593Smuzhiyun 
120*4882a593Smuzhiyun 	unsigned int		st_ctime;
121*4882a593Smuzhiyun 	unsigned int		st_ctime_nsec;
122*4882a593Smuzhiyun 
123*4882a593Smuzhiyun 	unsigned int		st_blksize;
124*4882a593Smuzhiyun 	unsigned int		st_pad2;
125*4882a593Smuzhiyun 
126*4882a593Smuzhiyun 	unsigned long		st_blocks;
127*4882a593Smuzhiyun };
128*4882a593Smuzhiyun 
129*4882a593Smuzhiyun #endif /* _MIPS_SIM == _MIPS_SIM_ABI64 */
130*4882a593Smuzhiyun 
131*4882a593Smuzhiyun #define STAT_HAVE_NSEC 1
132*4882a593Smuzhiyun 
133*4882a593Smuzhiyun #endif /* _ASM_STAT_H */
134