1#ifndef _ASM_STAT_H 2#define _ASM_STAT_H 3 4#include <linux/types.h> 5 6struct stat { 7 dev_t st_dev; 8 long st_pad1[3]; /* Reserved for network id */ 9 ino_t st_ino; 10 mode_t st_mode; 11 nlink_t st_nlink; 12 uid_t st_uid; 13 gid_t st_gid; 14 dev_t st_rdev; 15 long st_pad2[2]; 16 off_t st_size; 17 long st_pad3; 18 /* 19 * Actually this should be timestruc_t st_atime, st_mtime and st_ctime 20 * but we don't have it under Linux. 21 */ 22 time_t st_atime; 23 long reserved0; 24 time_t st_mtime; 25 long reserved1; 26 time_t st_ctime; 27 long reserved2; 28 long st_blksize; 29 long st_blocks; 30 long st_pad4[14]; 31}; 32 33/* 34 * This matches struct stat64 in glibc2.1, hence the absolutely insane 35 * amounts of padding around dev_t's. The memory layout is the same as of 36 * struct stat of the 64-bit kernel. 37 */ 38 39struct stat64 { 40 unsigned long st_dev; 41 unsigned long st_pad0[3]; /* Reserved for st_dev expansion */ 42 43 unsigned long long st_ino; 44 45 mode_t st_mode; 46 nlink_t st_nlink; 47 48 uid_t st_uid; 49 gid_t st_gid; 50 51 unsigned long st_rdev; 52 unsigned long st_pad1[3]; /* Reserved for st_rdev expansion */ 53 54 long long st_size; 55 56 /* 57 * Actually this should be timestruc_t st_atime, st_mtime and st_ctime 58 * but we don't have it under Linux. 59 */ 60 time_t st_atime; 61 unsigned long reserved0; /* Reserved for st_atime expansion */ 62 63 time_t st_mtime; 64 unsigned long reserved1; /* Reserved for st_mtime expansion */ 65 66 time_t st_ctime; 67 unsigned long reserved2; /* Reserved for st_ctime expansion */ 68 69 unsigned long st_blksize; 70 unsigned long st_pad2; 71 72 long long st_blocks; 73}; 74 75#endif /* _ASM_STAT_H */ 76