Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | Download | RSS feed

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