cpp-d1064d
[cross.git] / i686-linux-gnu-4.7 / usr / include / x86_64-linux-gnu / asm / stat.h
1 /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
2 #ifndef _ASM_X86_STAT_H
3 #define _ASM_X86_STAT_H
4
5 #include <asm/posix_types.h>
6
7 #define STAT_HAVE_NSEC 1
8
9 #ifdef __i386__
10 struct stat {
11         unsigned long  st_dev;
12         unsigned long  st_ino;
13         unsigned short st_mode;
14         unsigned short st_nlink;
15         unsigned short st_uid;
16         unsigned short st_gid;
17         unsigned long  st_rdev;
18         unsigned long  st_size;
19         unsigned long  st_blksize;
20         unsigned long  st_blocks;
21         unsigned long  st_atime;
22         unsigned long  st_atime_nsec;
23         unsigned long  st_mtime;
24         unsigned long  st_mtime_nsec;
25         unsigned long  st_ctime;
26         unsigned long  st_ctime_nsec;
27         unsigned long  __unused4;
28         unsigned long  __unused5;
29 };
30
31 /* We don't need to memset the whole thing just to initialize the padding */
32 #define INIT_STRUCT_STAT_PADDING(st) do {       \
33         st.__unused4 = 0;                       \
34         st.__unused5 = 0;                       \
35 } while (0)
36
37 #define STAT64_HAS_BROKEN_ST_INO        1
38
39 /* This matches struct stat64 in glibc2.1, hence the absolutely
40  * insane amounts of padding around dev_t's.
41  */
42 struct stat64 {
43         unsigned long long      st_dev;
44         unsigned char   __pad0[4];
45
46         unsigned long   __st_ino;
47
48         unsigned int    st_mode;
49         unsigned int    st_nlink;
50
51         unsigned long   st_uid;
52         unsigned long   st_gid;
53
54         unsigned long long      st_rdev;
55         unsigned char   __pad3[4];
56
57         long long       st_size;
58         unsigned long   st_blksize;
59
60         /* Number 512-byte blocks allocated. */
61         unsigned long long      st_blocks;
62
63         unsigned long   st_atime;
64         unsigned long   st_atime_nsec;
65
66         unsigned long   st_mtime;
67         unsigned int    st_mtime_nsec;
68
69         unsigned long   st_ctime;
70         unsigned long   st_ctime_nsec;
71
72         unsigned long long      st_ino;
73 };
74
75 /* We don't need to memset the whole thing just to initialize the padding */
76 #define INIT_STRUCT_STAT64_PADDING(st) do {             \
77         memset(&st.__pad0, 0, sizeof(st.__pad0));       \
78         memset(&st.__pad3, 0, sizeof(st.__pad3));       \
79 } while (0)
80
81 #else /* __i386__ */
82
83 struct stat {
84         __kernel_ulong_t        st_dev;
85         __kernel_ulong_t        st_ino;
86         __kernel_ulong_t        st_nlink;
87
88         unsigned int            st_mode;
89         unsigned int            st_uid;
90         unsigned int            st_gid;
91         unsigned int            __pad0;
92         __kernel_ulong_t        st_rdev;
93         __kernel_long_t         st_size;
94         __kernel_long_t         st_blksize;
95         __kernel_long_t         st_blocks;      /* Number 512-byte blocks allocated. */
96
97         __kernel_ulong_t        st_atime;
98         __kernel_ulong_t        st_atime_nsec;
99         __kernel_ulong_t        st_mtime;
100         __kernel_ulong_t        st_mtime_nsec;
101         __kernel_ulong_t        st_ctime;
102         __kernel_ulong_t        st_ctime_nsec;
103         __kernel_long_t         __unused[3];
104 };
105
106 /* We don't need to memset the whole thing just to initialize the padding */
107 #define INIT_STRUCT_STAT_PADDING(st) do {       \
108         st.__pad0 = 0;                          \
109         st.__unused[0] = 0;                     \
110         st.__unused[1] = 0;                     \
111         st.__unused[2] = 0;                     \
112 } while (0)
113
114 #endif
115
116 /* for 32bit emulation and 32 bit kernels */
117 struct __old_kernel_stat {
118         unsigned short st_dev;
119         unsigned short st_ino;
120         unsigned short st_mode;
121         unsigned short st_nlink;
122         unsigned short st_uid;
123         unsigned short st_gid;
124         unsigned short st_rdev;
125 #ifdef __i386__
126         unsigned long  st_size;
127         unsigned long  st_atime;
128         unsigned long  st_mtime;
129         unsigned long  st_ctime;
130 #else
131         unsigned int  st_size;
132         unsigned int  st_atime;
133         unsigned int  st_mtime;
134         unsigned int  st_ctime;
135 #endif
136 };
137
138 #endif /* _ASM_X86_STAT_H */