Subversion Repositories Kolibri OS

Rev

Details | Last modification | View Log | RSS feed

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