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