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