10437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#ifndef _ASM_X86_STAT_H 20437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#define _ASM_X86_STAT_H 30437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris 4e87eaf040ab639e94ed0a58ff0eac68d1d38fb0aEd Heyl#include <asm/posix_types.h> 5e87eaf040ab639e94ed0a58ff0eac68d1d38fb0aEd Heyl 60437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#define STAT_HAVE_NSEC 1 70437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris 80437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#ifdef __i386__ 90437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferrisstruct stat { 100437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris unsigned long st_dev; 110437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris unsigned long st_ino; 120437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris unsigned short st_mode; 130437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris unsigned short st_nlink; 140437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris unsigned short st_uid; 150437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris unsigned short st_gid; 160437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris unsigned long st_rdev; 170437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris unsigned long st_size; 180437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris unsigned long st_blksize; 190437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris unsigned long st_blocks; 200437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris unsigned long st_atime; 210437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris unsigned long st_atime_nsec; 220437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris unsigned long st_mtime; 230437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris unsigned long st_mtime_nsec; 240437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris unsigned long st_ctime; 250437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris unsigned long st_ctime_nsec; 260437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris unsigned long __unused4; 270437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris unsigned long __unused5; 280437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris}; 290437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris 300437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris/* We don't need to memset the whole thing just to initialize the padding */ 310437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#define INIT_STRUCT_STAT_PADDING(st) do { \ 320437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris st.__unused4 = 0; \ 330437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris st.__unused5 = 0; \ 340437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris} while (0) 350437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris 360437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#define STAT64_HAS_BROKEN_ST_INO 1 370437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris 380437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris/* This matches struct stat64 in glibc2.1, hence the absolutely 390437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris * insane amounts of padding around dev_t's. 400437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris */ 410437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferrisstruct stat64 { 420437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris unsigned long long st_dev; 430437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris unsigned char __pad0[4]; 440437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris 450437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris unsigned long __st_ino; 460437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris 470437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris unsigned int st_mode; 480437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris unsigned int st_nlink; 490437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris 500437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris unsigned long st_uid; 510437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris unsigned long st_gid; 520437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris 530437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris unsigned long long st_rdev; 540437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris unsigned char __pad3[4]; 550437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris 560437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris long long st_size; 570437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris unsigned long st_blksize; 580437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris 590437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris /* Number 512-byte blocks allocated. */ 600437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris unsigned long long st_blocks; 610437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris 620437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris unsigned long st_atime; 630437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris unsigned long st_atime_nsec; 640437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris 650437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris unsigned long st_mtime; 660437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris unsigned int st_mtime_nsec; 670437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris 680437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris unsigned long st_ctime; 690437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris unsigned long st_ctime_nsec; 700437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris 710437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris unsigned long long st_ino; 720437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris}; 730437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris 740437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris/* We don't need to memset the whole thing just to initialize the padding */ 750437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#define INIT_STRUCT_STAT64_PADDING(st) do { \ 760437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris memset(&st.__pad0, 0, sizeof(st.__pad0)); \ 770437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris memset(&st.__pad3, 0, sizeof(st.__pad3)); \ 780437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris} while (0) 790437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris 800437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#else /* __i386__ */ 810437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris 820437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferrisstruct stat { 83e87eaf040ab639e94ed0a58ff0eac68d1d38fb0aEd Heyl __kernel_ulong_t st_dev; 84e87eaf040ab639e94ed0a58ff0eac68d1d38fb0aEd Heyl __kernel_ulong_t st_ino; 85e87eaf040ab639e94ed0a58ff0eac68d1d38fb0aEd Heyl __kernel_ulong_t st_nlink; 86e87eaf040ab639e94ed0a58ff0eac68d1d38fb0aEd Heyl 87e87eaf040ab639e94ed0a58ff0eac68d1d38fb0aEd Heyl unsigned int st_mode; 88e87eaf040ab639e94ed0a58ff0eac68d1d38fb0aEd Heyl unsigned int st_uid; 89e87eaf040ab639e94ed0a58ff0eac68d1d38fb0aEd Heyl unsigned int st_gid; 90e87eaf040ab639e94ed0a58ff0eac68d1d38fb0aEd Heyl unsigned int __pad0; 91e87eaf040ab639e94ed0a58ff0eac68d1d38fb0aEd Heyl __kernel_ulong_t st_rdev; 92e87eaf040ab639e94ed0a58ff0eac68d1d38fb0aEd Heyl __kernel_long_t st_size; 93e87eaf040ab639e94ed0a58ff0eac68d1d38fb0aEd Heyl __kernel_long_t st_blksize; 94e87eaf040ab639e94ed0a58ff0eac68d1d38fb0aEd Heyl __kernel_long_t st_blocks; /* Number 512-byte blocks allocated. */ 95e87eaf040ab639e94ed0a58ff0eac68d1d38fb0aEd Heyl 96e87eaf040ab639e94ed0a58ff0eac68d1d38fb0aEd Heyl __kernel_ulong_t st_atime; 97e87eaf040ab639e94ed0a58ff0eac68d1d38fb0aEd Heyl __kernel_ulong_t st_atime_nsec; 98e87eaf040ab639e94ed0a58ff0eac68d1d38fb0aEd Heyl __kernel_ulong_t st_mtime; 99e87eaf040ab639e94ed0a58ff0eac68d1d38fb0aEd Heyl __kernel_ulong_t st_mtime_nsec; 100e87eaf040ab639e94ed0a58ff0eac68d1d38fb0aEd Heyl __kernel_ulong_t st_ctime; 101e87eaf040ab639e94ed0a58ff0eac68d1d38fb0aEd Heyl __kernel_ulong_t st_ctime_nsec; 102e87eaf040ab639e94ed0a58ff0eac68d1d38fb0aEd Heyl __kernel_long_t __unused[3]; 1030437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris}; 1040437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris 1050437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris/* We don't need to memset the whole thing just to initialize the padding */ 1060437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#define INIT_STRUCT_STAT_PADDING(st) do { \ 1070437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris st.__pad0 = 0; \ 1080437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris st.__unused[0] = 0; \ 1090437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris st.__unused[1] = 0; \ 1100437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris st.__unused[2] = 0; \ 1110437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris} while (0) 1120437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris 1130437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#endif 1140437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris 1150437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris/* for 32bit emulation and 32 bit kernels */ 1160437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferrisstruct __old_kernel_stat { 1170437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris unsigned short st_dev; 1180437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris unsigned short st_ino; 1190437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris unsigned short st_mode; 1200437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris unsigned short st_nlink; 1210437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris unsigned short st_uid; 1220437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris unsigned short st_gid; 1230437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris unsigned short st_rdev; 1240437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#ifdef __i386__ 1250437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris unsigned long st_size; 1260437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris unsigned long st_atime; 1270437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris unsigned long st_mtime; 1280437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris unsigned long st_ctime; 1290437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#else 1300437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris unsigned int st_size; 1310437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris unsigned int st_atime; 1320437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris unsigned int st_mtime; 1330437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris unsigned int st_ctime; 1340437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#endif 1350437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris}; 1360437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris 1370437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#endif /* _ASM_X86_STAT_H */ 138