0001
0002 #ifndef _ASM_X86_STAT_H
0003 #define _ASM_X86_STAT_H
0004
0005 #include <asm/posix_types.h>
0006
0007 #define STAT_HAVE_NSEC 1
0008
0009 #ifdef __i386__
0010 struct stat {
0011 unsigned long st_dev;
0012 unsigned long st_ino;
0013 unsigned short st_mode;
0014 unsigned short st_nlink;
0015 unsigned short st_uid;
0016 unsigned short st_gid;
0017 unsigned long st_rdev;
0018 unsigned long st_size;
0019 unsigned long st_blksize;
0020 unsigned long st_blocks;
0021 unsigned long st_atime;
0022 unsigned long st_atime_nsec;
0023 unsigned long st_mtime;
0024 unsigned long st_mtime_nsec;
0025 unsigned long st_ctime;
0026 unsigned long st_ctime_nsec;
0027 unsigned long __unused4;
0028 unsigned long __unused5;
0029 };
0030
0031
0032 #define INIT_STRUCT_STAT_PADDING(st) do { \
0033 st.__unused4 = 0; \
0034 st.__unused5 = 0; \
0035 } while (0)
0036
0037 #define STAT64_HAS_BROKEN_ST_INO 1
0038
0039
0040
0041
0042 struct stat64 {
0043 unsigned long long st_dev;
0044 unsigned char __pad0[4];
0045
0046 unsigned long __st_ino;
0047
0048 unsigned int st_mode;
0049 unsigned int st_nlink;
0050
0051 unsigned long st_uid;
0052 unsigned long st_gid;
0053
0054 unsigned long long st_rdev;
0055 unsigned char __pad3[4];
0056
0057 long long st_size;
0058 unsigned long st_blksize;
0059
0060
0061 unsigned long long st_blocks;
0062
0063 unsigned long st_atime;
0064 unsigned long st_atime_nsec;
0065
0066 unsigned long st_mtime;
0067 unsigned int st_mtime_nsec;
0068
0069 unsigned long st_ctime;
0070 unsigned long st_ctime_nsec;
0071
0072 unsigned long long st_ino;
0073 };
0074
0075
0076 #define INIT_STRUCT_STAT64_PADDING(st) do { \
0077 memset(&st.__pad0, 0, sizeof(st.__pad0)); \
0078 memset(&st.__pad3, 0, sizeof(st.__pad3)); \
0079 } while (0)
0080
0081 #else
0082
0083 struct stat {
0084 __kernel_ulong_t st_dev;
0085 __kernel_ulong_t st_ino;
0086 __kernel_ulong_t st_nlink;
0087
0088 unsigned int st_mode;
0089 unsigned int st_uid;
0090 unsigned int st_gid;
0091 unsigned int __pad0;
0092 __kernel_ulong_t st_rdev;
0093 __kernel_long_t st_size;
0094 __kernel_long_t st_blksize;
0095 __kernel_long_t st_blocks;
0096
0097 __kernel_ulong_t st_atime;
0098 __kernel_ulong_t st_atime_nsec;
0099 __kernel_ulong_t st_mtime;
0100 __kernel_ulong_t st_mtime_nsec;
0101 __kernel_ulong_t st_ctime;
0102 __kernel_ulong_t st_ctime_nsec;
0103 __kernel_long_t __unused[3];
0104 };
0105
0106
0107 #define INIT_STRUCT_STAT_PADDING(st) do { \
0108 st.__pad0 = 0; \
0109 st.__unused[0] = 0; \
0110 st.__unused[1] = 0; \
0111 st.__unused[2] = 0; \
0112 } while (0)
0113
0114 #endif
0115
0116
0117 struct __old_kernel_stat {
0118 unsigned short st_dev;
0119 unsigned short st_ino;
0120 unsigned short st_mode;
0121 unsigned short st_nlink;
0122 unsigned short st_uid;
0123 unsigned short st_gid;
0124 unsigned short st_rdev;
0125 #ifdef __i386__
0126 unsigned long st_size;
0127 unsigned long st_atime;
0128 unsigned long st_mtime;
0129 unsigned long st_ctime;
0130 #else
0131 unsigned int st_size;
0132 unsigned int st_atime;
0133 unsigned int st_mtime;
0134 unsigned int st_ctime;
0135 #endif
0136 };
0137
0138 #endif