1 /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ 2 #ifndef _ASM_STAT_H 3 #define _ASM_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 /* This matches struct stat in uClibc/glibc. */ 20 struct stat { 21 unsigned char __pad1[6]; 22 unsigned short st_dev; 23 24 unsigned long __pad2; 25 unsigned long st_ino; 26 27 unsigned short __pad3; 28 unsigned short st_mode; 29 unsigned short __pad4; 30 unsigned short st_nlink; 31 32 unsigned short __pad5; 33 unsigned short st_uid; 34 unsigned short __pad6; 35 unsigned short st_gid; 36 37 unsigned char __pad7[6]; 38 unsigned short st_rdev; 39 40 unsigned long __pad8; 41 unsigned long st_size; 42 43 unsigned long __pad9; /* align 64-bit st_blocks to 2-word */ 44 unsigned long st_blksize; 45 46 unsigned long __pad10; /* future possible st_blocks high bits */ 47 unsigned long st_blocks; /* Number 512-byte blocks allocated. */ 48 49 unsigned long __unused1; 50 unsigned long st_atime; 51 52 unsigned long __unused2; 53 unsigned long st_mtime; 54 55 unsigned long __unused3; 56 unsigned long st_ctime; 57 58 unsigned long long __unused4; 59 }; 60 61 /* This matches struct stat64 in uClibc/glibc. The layout is exactly 62 the same as that of struct stat above, with 64-bit types taking up 63 space that was formerly used by padding. stat syscalls are still 64 different from stat64, though, in that the former tests for 65 overflow. */ 66 struct stat64 { 67 unsigned char __pad1[6]; 68 unsigned short st_dev; 69 70 unsigned long long st_ino; 71 72 unsigned int st_mode; 73 unsigned int st_nlink; 74 75 unsigned long st_uid; 76 unsigned long st_gid; 77 78 unsigned char __pad2[6]; 79 unsigned short st_rdev; 80 81 long long st_size; 82 83 unsigned long __pad3; /* align 64-bit st_blocks to 2-word */ 84 unsigned long st_blksize; 85 86 unsigned long __pad4; /* future possible st_blocks high bits */ 87 unsigned long st_blocks; /* Number 512-byte blocks allocated. */ 88 89 unsigned long st_atime_nsec; 90 unsigned long st_atime; 91 92 unsigned int st_mtime_nsec; 93 unsigned long st_mtime; 94 95 unsigned long st_ctime_nsec; 96 unsigned long st_ctime; 97 98 unsigned long long __unused4; 99 }; 100 101 #endif /* _ASM_STAT_H */ 102