linux-headers (unknown)

(root)/
include/
asm/
stat.h
       1  /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
       2  #ifndef _ASM_X86_STAT_H
       3  #define _ASM_X86_STAT_H
       4  
       5  #include <asm/posix_types.h>
       6  
       7  #define STAT_HAVE_NSEC 1
       8  
       9  #ifdef __i386__
      10  struct stat {
      11  	unsigned long  st_dev;
      12  	unsigned long  st_ino;
      13  	unsigned short st_mode;
      14  	unsigned short st_nlink;
      15  	unsigned short st_uid;
      16  	unsigned short st_gid;
      17  	unsigned long  st_rdev;
      18  	unsigned long  st_size;
      19  	unsigned long  st_blksize;
      20  	unsigned long  st_blocks;
      21  	unsigned long  st_atime;
      22  	unsigned long  st_atime_nsec;
      23  	unsigned long  st_mtime;
      24  	unsigned long  st_mtime_nsec;
      25  	unsigned long  st_ctime;
      26  	unsigned long  st_ctime_nsec;
      27  	unsigned long  __unused4;
      28  	unsigned long  __unused5;
      29  };
      30  
      31  /* We don't need to memset the whole thing just to initialize the padding */
      32  #define INIT_STRUCT_STAT_PADDING(st) do {	\
      33  	st.__unused4 = 0;			\
      34  	st.__unused5 = 0;			\
      35  } while (0)
      36  
      37  #define STAT64_HAS_BROKEN_ST_INO	1
      38  
      39  /* This matches struct stat64 in glibc2.1, hence the absolutely
      40   * insane amounts of padding around dev_t's.
      41   */
      42  struct stat64 {
      43  	unsigned long long	st_dev;
      44  	unsigned char	__pad0[4];
      45  
      46  	unsigned long	__st_ino;
      47  
      48  	unsigned int	st_mode;
      49  	unsigned int	st_nlink;
      50  
      51  	unsigned long	st_uid;
      52  	unsigned long	st_gid;
      53  
      54  	unsigned long long	st_rdev;
      55  	unsigned char	__pad3[4];
      56  
      57  	long long	st_size;
      58  	unsigned long	st_blksize;
      59  
      60  	/* Number 512-byte blocks allocated. */
      61  	unsigned long long	st_blocks;
      62  
      63  	unsigned long	st_atime;
      64  	unsigned long	st_atime_nsec;
      65  
      66  	unsigned long	st_mtime;
      67  	unsigned int	st_mtime_nsec;
      68  
      69  	unsigned long	st_ctime;
      70  	unsigned long	st_ctime_nsec;
      71  
      72  	unsigned long long	st_ino;
      73  };
      74  
      75  /* We don't need to memset the whole thing just to initialize the padding */
      76  #define INIT_STRUCT_STAT64_PADDING(st) do {		\
      77  	memset(&st.__pad0, 0, sizeof(st.__pad0));	\
      78  	memset(&st.__pad3, 0, sizeof(st.__pad3));	\
      79  } while (0)
      80  
      81  #else /* __i386__ */
      82  
      83  struct stat {
      84  	__kernel_ulong_t	st_dev;
      85  	__kernel_ulong_t	st_ino;
      86  	__kernel_ulong_t	st_nlink;
      87  
      88  	unsigned int		st_mode;
      89  	unsigned int		st_uid;
      90  	unsigned int		st_gid;
      91  	unsigned int		__pad0;
      92  	__kernel_ulong_t	st_rdev;
      93  	__kernel_long_t		st_size;
      94  	__kernel_long_t		st_blksize;
      95  	__kernel_long_t		st_blocks;	/* Number 512-byte blocks allocated. */
      96  
      97  	__kernel_ulong_t	st_atime;
      98  	__kernel_ulong_t	st_atime_nsec;
      99  	__kernel_ulong_t	st_mtime;
     100  	__kernel_ulong_t	st_mtime_nsec;
     101  	__kernel_ulong_t	st_ctime;
     102  	__kernel_ulong_t	st_ctime_nsec;
     103  	__kernel_long_t		__unused[3];
     104  };
     105  
     106  /* We don't need to memset the whole thing just to initialize the padding */
     107  #define INIT_STRUCT_STAT_PADDING(st) do {	\
     108  	st.__pad0 = 0;				\
     109  	st.__unused[0] = 0;			\
     110  	st.__unused[1] = 0;			\
     111  	st.__unused[2] = 0;			\
     112  } while (0)
     113  
     114  #endif
     115  
     116  /* for 32bit emulation and 32 bit kernels */
     117  struct __old_kernel_stat {
     118  	unsigned short st_dev;
     119  	unsigned short st_ino;
     120  	unsigned short st_mode;
     121  	unsigned short st_nlink;
     122  	unsigned short st_uid;
     123  	unsigned short st_gid;
     124  	unsigned short st_rdev;
     125  #ifdef __i386__
     126  	unsigned long  st_size;
     127  	unsigned long  st_atime;
     128  	unsigned long  st_mtime;
     129  	unsigned long  st_ctime;
     130  #else
     131  	unsigned int  st_size;
     132  	unsigned int  st_atime;
     133  	unsigned int  st_mtime;
     134  	unsigned int  st_ctime;
     135  #endif
     136  };
     137  
     138  #endif /* _ASM_X86_STAT_H */