Linux 3.8-rc7
[cris-mirror.git] / arch / x86 / include / uapi / asm / stat.h
blob7b3ddc348585f0c8b4cc0afe63b6ac36206217d3
1 #ifndef _ASM_X86_STAT_H
2 #define _ASM_X86_STAT_H
4 #define STAT_HAVE_NSEC 1
6 #ifdef __i386__
7 struct stat {
8 unsigned long st_dev;
9 unsigned long st_ino;
10 unsigned short st_mode;
11 unsigned short st_nlink;
12 unsigned short st_uid;
13 unsigned short st_gid;
14 unsigned long st_rdev;
15 unsigned long st_size;
16 unsigned long st_blksize;
17 unsigned long st_blocks;
18 unsigned long st_atime;
19 unsigned long st_atime_nsec;
20 unsigned long st_mtime;
21 unsigned long st_mtime_nsec;
22 unsigned long st_ctime;
23 unsigned long st_ctime_nsec;
24 unsigned long __unused4;
25 unsigned long __unused5;
28 /* We don't need to memset the whole thing just to initialize the padding */
29 #define INIT_STRUCT_STAT_PADDING(st) do { \
30 st.__unused4 = 0; \
31 st.__unused5 = 0; \
32 } while (0)
34 #define STAT64_HAS_BROKEN_ST_INO 1
36 /* This matches struct stat64 in glibc2.1, hence the absolutely
37 * insane amounts of padding around dev_t's.
39 struct stat64 {
40 unsigned long long st_dev;
41 unsigned char __pad0[4];
43 unsigned long __st_ino;
45 unsigned int st_mode;
46 unsigned int st_nlink;
48 unsigned long st_uid;
49 unsigned long st_gid;
51 unsigned long long st_rdev;
52 unsigned char __pad3[4];
54 long long st_size;
55 unsigned long st_blksize;
57 /* Number 512-byte blocks allocated. */
58 unsigned long long st_blocks;
60 unsigned long st_atime;
61 unsigned long st_atime_nsec;
63 unsigned long st_mtime;
64 unsigned int st_mtime_nsec;
66 unsigned long st_ctime;
67 unsigned long st_ctime_nsec;
69 unsigned long long st_ino;
72 /* We don't need to memset the whole thing just to initialize the padding */
73 #define INIT_STRUCT_STAT64_PADDING(st) do { \
74 memset(&st.__pad0, 0, sizeof(st.__pad0)); \
75 memset(&st.__pad3, 0, sizeof(st.__pad3)); \
76 } while (0)
78 #else /* __i386__ */
80 struct stat {
81 unsigned long st_dev;
82 unsigned long st_ino;
83 unsigned long st_nlink;
85 unsigned int st_mode;
86 unsigned int st_uid;
87 unsigned int st_gid;
88 unsigned int __pad0;
89 unsigned long st_rdev;
90 long st_size;
91 long st_blksize;
92 long st_blocks; /* Number 512-byte blocks allocated. */
94 unsigned long st_atime;
95 unsigned long st_atime_nsec;
96 unsigned long st_mtime;
97 unsigned long st_mtime_nsec;
98 unsigned long st_ctime;
99 unsigned long st_ctime_nsec;
100 long __unused[3];
103 /* We don't need to memset the whole thing just to initialize the padding */
104 #define INIT_STRUCT_STAT_PADDING(st) do { \
105 st.__pad0 = 0; \
106 st.__unused[0] = 0; \
107 st.__unused[1] = 0; \
108 st.__unused[2] = 0; \
109 } while (0)
111 #endif
113 /* for 32bit emulation and 32 bit kernels */
114 struct __old_kernel_stat {
115 unsigned short st_dev;
116 unsigned short st_ino;
117 unsigned short st_mode;
118 unsigned short st_nlink;
119 unsigned short st_uid;
120 unsigned short st_gid;
121 unsigned short st_rdev;
122 #ifdef __i386__
123 unsigned long st_size;
124 unsigned long st_atime;
125 unsigned long st_mtime;
126 unsigned long st_ctime;
127 #else
128 unsigned int st_size;
129 unsigned int st_atime;
130 unsigned int st_mtime;
131 unsigned int st_ctime;
132 #endif
135 #endif /* _ASM_X86_STAT_H */