Home | History | Annotate | Download | only in asm
      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