1 #ifndef _BITS_STAT_STRUCT_H
2 #define _BITS_STAT_STRUCT_H
3 
4 /* This file provides whatever this particular arch's kernel thinks
5  * struct kernel_stat should look like...  It turns out each arch has a
6  * different opinion on the subject... */
7 
8 #include <sgidefs.h>
9 
10 #if _MIPS_SIM == _MIPS_SIM_ABI64
11 typedef struct {
12 	unsigned int tv_sec;
13 	unsigned int tv_nsec;
14 } __ktimespec_t;
15 #else
16 typedef struct {
17 #if defined(__UCLIBC_USE_TIME64__)
18 	__S32_TYPE tv_sec;
19 #else
20 	time_t tv_sec;
21 #endif
22 	unsigned long tv_nsec;
23 } __ktimespec_t;
24 #endif
25 
26 #if _MIPS_SIM == _MIPS_SIM_ABI64
27 /* The memory layout is the same as of struct stat64 of the 32-bit kernel.  */
28 struct kernel_stat {
29 	__kernel_dev_t	st_dev;
30 	unsigned int	st_pad1[3];
31 	__kernel_ino_t	st_ino;
32 	__kernel_mode_t	st_mode;
33 	__kernel_nlink_t st_nlink;
34 	__kernel_uid_t	st_uid;
35 	__kernel_gid_t	st_gid;
36 	__kernel_dev_t	st_rdev;
37 	unsigned int	st_pad2[3];
38 	__kernel_off_t	st_size;
39 	__ktimespec_t	st_atim;
40 	__ktimespec_t	st_mtim;
41 	__ktimespec_t	st_ctim;
42 	unsigned int	st_blksize;
43 	unsigned int	reserved3;
44 	unsigned long	st_blocks;
45 };
46 #define kernel_stat64 kernel_stat
47 #elif _MIPS_SIM == _MIPS_SIM_NABI32
48 /* The memory layout is the same as of struct stat64 of the 32-bit kernel.  */
49 struct kernel_stat {
50 	unsigned int	st_dev;
51 	unsigned int	st_pad1[3];
52 	unsigned long long	st_ino;
53 	__kernel_mode_t	st_mode;
54 	__kernel_nlink_t st_nlink;
55 	__kernel_uid_t	st_uid;
56 	__kernel_gid_t	st_gid;
57 	unsigned int	st_rdev;
58 	unsigned int	st_pad2[3];
59 	unsigned long long	st_size;
60 	__ktimespec_t	st_atim;
61 	__ktimespec_t	st_mtim;
62 	__ktimespec_t	st_ctim;
63 	unsigned int	st_blksize;
64 	unsigned int	reserved3;
65 	unsigned long long	st_blocks;
66 };
67 #define kernel_stat64 kernel_stat
68 #else /* O32 */
69 struct kernel_stat {
70 	__kernel_dev_t	st_dev;
71 	long		st_pad1[3];
72 	__kernel_ino_t	st_ino;
73 	__kernel_mode_t	st_mode;
74 	__kernel_nlink_t st_nlink;
75 	__kernel_uid_t	st_uid;
76 	__kernel_gid_t	st_gid;
77 	__kernel_dev_t	st_rdev;
78 	long		st_pad2[2];
79 	__kernel_off_t	st_size;
80 	long		st_pad3;
81 	__ktimespec_t	st_atim;
82 	__ktimespec_t	st_mtim;
83 	__ktimespec_t	st_ctim;
84 	long		st_blksize;
85 	long		st_blocks;
86 	long		st_pad4[14];
87 };
88 
89 struct kernel_stat64 {
90 	unsigned long	st_dev;
91 	unsigned long	st_pad0[3];	/* Reserved for st_dev expansion  */
92 	unsigned long long	st_ino;
93 	__kernel_mode_t	st_mode;
94 	__kernel_nlink_t st_nlink;
95 	__kernel_uid_t	st_uid;
96 	__kernel_gid_t	st_gid;
97 	unsigned long	st_rdev;
98 	unsigned long	st_pad1[3];	/* Reserved for st_rdev expansion  */
99 	long long	st_size;
100 	__ktimespec_t	st_atim;
101 	__ktimespec_t	st_mtim;
102 	__ktimespec_t	st_ctim;
103 	unsigned long	st_blksize;
104 	unsigned long	st_pad2;
105 	long long	st_blocks;
106 };
107 #endif	/* O32 */
108 
109 #endif	/*  _BITS_STAT_STRUCT_H */
110 
111