stat.h revision 0437c52788a98ab8ea84041c6b1f8d7a93e872f6
1#ifndef _ASM_X86_STAT_H 2#define _ASM_X86_STAT_H 3 4#define STAT_HAVE_NSEC 1 5 6#ifdef __i386__ 7struct 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; 26}; 27 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) 33 34#define STAT64_HAS_BROKEN_ST_INO 1 35 36/* This matches struct stat64 in glibc2.1, hence the absolutely 37 * insane amounts of padding around dev_t's. 38 */ 39struct stat64 { 40 unsigned long long st_dev; 41 unsigned char __pad0[4]; 42 43 unsigned long __st_ino; 44 45 unsigned int st_mode; 46 unsigned int st_nlink; 47 48 unsigned long st_uid; 49 unsigned long st_gid; 50 51 unsigned long long st_rdev; 52 unsigned char __pad3[4]; 53 54 long long st_size; 55 unsigned long st_blksize; 56 57 /* Number 512-byte blocks allocated. */ 58 unsigned long long st_blocks; 59 60 unsigned long st_atime; 61 unsigned long st_atime_nsec; 62 63 unsigned long st_mtime; 64 unsigned int st_mtime_nsec; 65 66 unsigned long st_ctime; 67 unsigned long st_ctime_nsec; 68 69 unsigned long long st_ino; 70}; 71 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) 77 78#else /* __i386__ */ 79 80struct stat { 81 unsigned long st_dev; 82 unsigned long st_ino; 83 unsigned long st_nlink; 84 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. */ 93 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]; 101}; 102 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) 110 111#endif 112 113/* for 32bit emulation and 32 bit kernels */ 114struct __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 133}; 134 135#endif /* _ASM_X86_STAT_H */ 136