1 /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ 2 #ifndef _ASMARM_STAT_H 3 #define _ASMARM_STAT_H 4 5 struct __old_kernel_stat { 6 unsigned short st_dev; 7 unsigned short st_ino; 8 unsigned short st_mode; 9 unsigned short st_nlink; 10 unsigned short st_uid; 11 unsigned short st_gid; 12 unsigned short st_rdev; 13 unsigned long st_size; 14 unsigned long st_atime; 15 unsigned long st_mtime; 16 unsigned long st_ctime; 17 }; 18 19 #define STAT_HAVE_NSEC 20 21 struct stat { 22 #if defined(__ARMEB__) 23 unsigned short st_dev; 24 unsigned short __pad1; 25 #else 26 unsigned long st_dev; 27 #endif 28 unsigned long st_ino; 29 unsigned short st_mode; 30 unsigned short st_nlink; 31 unsigned short st_uid; 32 unsigned short st_gid; 33 #if defined(__ARMEB__) 34 unsigned short st_rdev; 35 unsigned short __pad2; 36 #else 37 unsigned long st_rdev; 38 #endif 39 unsigned long st_size; 40 unsigned long st_blksize; 41 unsigned long st_blocks; 42 unsigned long st_atime; 43 unsigned long st_atime_nsec; 44 unsigned long st_mtime; 45 unsigned long st_mtime_nsec; 46 unsigned long st_ctime; 47 unsigned long st_ctime_nsec; 48 unsigned long __unused4; 49 unsigned long __unused5; 50 }; 51 52 /* This matches struct stat64 in glibc2.1, hence the absolutely 53 * insane amounts of padding around dev_t's. 54 * Note: The kernel zero's the padded region because glibc might read them 55 * in the hope that the kernel has stretched to using larger sizes. 56 */ 57 struct stat64 { 58 unsigned long long st_dev; 59 unsigned char __pad0[4]; 60 61 #define STAT64_HAS_BROKEN_ST_INO 1 62 unsigned long __st_ino; 63 unsigned int st_mode; 64 unsigned int st_nlink; 65 66 unsigned long st_uid; 67 unsigned long st_gid; 68 69 unsigned long long st_rdev; 70 unsigned char __pad3[4]; 71 72 long long st_size; 73 unsigned long st_blksize; 74 unsigned long long st_blocks; /* Number 512-byte blocks allocated. */ 75 76 unsigned long st_atime; 77 unsigned long st_atime_nsec; 78 79 unsigned long st_mtime; 80 unsigned long st_mtime_nsec; 81 82 unsigned long st_ctime; 83 unsigned long st_ctime_nsec; 84 85 unsigned long long st_ino; 86 }; 87 88 #endif 89