16534c9c2Swdenk #ifndef _LINUX_STAT_H 26534c9c2Swdenk #define _LINUX_STAT_H 36534c9c2Swdenk 46534c9c2Swdenk #include <linux/types.h> 56534c9c2Swdenk 66534c9c2Swdenk #ifdef __cplusplus 76534c9c2Swdenk extern "C" { 86534c9c2Swdenk #endif 96534c9c2Swdenk 106534c9c2Swdenk #define S_IFMT 00170000 /* type of file */ 116534c9c2Swdenk #define S_IFSOCK 0140000 /* named socket */ 126534c9c2Swdenk #define S_IFLNK 0120000 /* symbolic link */ 136534c9c2Swdenk #define S_IFREG 0100000 /* regular */ 146534c9c2Swdenk #define S_IFBLK 0060000 /* block special */ 156534c9c2Swdenk #define S_IFDIR 0040000 /* directory */ 166534c9c2Swdenk #define S_IFCHR 0020000 /* character special */ 176534c9c2Swdenk #define S_IFIFO 0010000 /* fifo */ 186534c9c2Swdenk #define S_ISUID 0004000 /* set user id on execution */ 196534c9c2Swdenk #define S_ISGID 0002000 /* set group id on execution */ 206534c9c2Swdenk #define S_ISVTX 0001000 /* save swapped text even after use */ 216534c9c2Swdenk 226534c9c2Swdenk #define S_ISLNK(m) (((m) & S_IFMT) == S_IFLNK) 236534c9c2Swdenk #define S_ISREG(m) (((m) & S_IFMT) == S_IFREG) 246534c9c2Swdenk #define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR) 256534c9c2Swdenk #define S_ISCHR(m) (((m) & S_IFMT) == S_IFCHR) 266534c9c2Swdenk #define S_ISBLK(m) (((m) & S_IFMT) == S_IFBLK) 276534c9c2Swdenk #define S_ISFIFO(m) (((m) & S_IFMT) == S_IFIFO) 286534c9c2Swdenk #define S_ISSOCK(m) (((m) & S_IFMT) == S_IFSOCK) 296534c9c2Swdenk 306534c9c2Swdenk #define S_IRWXU 00700 /* rwx for owner */ 316534c9c2Swdenk #define S_IRUSR 00400 /* read permission for owner */ 326534c9c2Swdenk #define S_IWUSR 00200 /* write permission for owner */ 336534c9c2Swdenk #define S_IXUSR 00100 /* execute/search permission for owner */ 346534c9c2Swdenk 356534c9c2Swdenk #define S_IRWXG 00070 /* rwx for group */ 366534c9c2Swdenk #define S_IRGRP 00040 /* read permission for group */ 376534c9c2Swdenk #define S_IWGRP 00020 /* write permission for group */ 386534c9c2Swdenk #define S_IXGRP 00010 /* execute/search permission for group */ 396534c9c2Swdenk 406534c9c2Swdenk #define S_IRWXO 00007 /* rwx for other */ 416534c9c2Swdenk #define S_IROTH 00004 /* read permission for other */ 426534c9c2Swdenk #define S_IWOTH 00002 /* read permission for other */ 436534c9c2Swdenk #define S_IXOTH 00001 /* execute/search permission for other */ 446534c9c2Swdenk 456534c9c2Swdenk #ifdef __PPC__ 466534c9c2Swdenk 476534c9c2Swdenk struct stat { 486534c9c2Swdenk dev_t st_dev; /* file system id */ 496534c9c2Swdenk ino_t st_ino; /* file id */ 506534c9c2Swdenk mode_t st_mode; /* ownership/protection */ 516534c9c2Swdenk nlink_t st_nlink; /* number of links */ 526534c9c2Swdenk uid_t st_uid; /* user id */ 536534c9c2Swdenk gid_t st_gid; /* group id */ 546534c9c2Swdenk dev_t st_rdev; 556534c9c2Swdenk off_t st_size; /* file size in # of bytes */ 566534c9c2Swdenk unsigned long st_blksize; /* block size */ 576534c9c2Swdenk unsigned long st_blocks; /* file size in # of blocks */ 586534c9c2Swdenk unsigned long st_atime; /* time file was last accessed */ 596534c9c2Swdenk unsigned long __unused1; 606534c9c2Swdenk unsigned long st_mtime; /* time file was last modified */ 616534c9c2Swdenk unsigned long __unused2; 626534c9c2Swdenk unsigned long st_ctime; /* time file status was last changed */ 636534c9c2Swdenk unsigned long __unused3; 646534c9c2Swdenk unsigned long __unused4; 656534c9c2Swdenk unsigned long __unused5; 666534c9c2Swdenk }; 676534c9c2Swdenk 686534c9c2Swdenk #endif /* __PPC__ */ 696534c9c2Swdenk 703c4bd60dSMichal Simek #if defined (__ARM__) || defined (__I386__) || defined (__M68K__) || defined (__bfin__) ||\ 71c72bfafbSThomas Chou defined (__microblaze__) || defined (__nios2__) 726534c9c2Swdenk 736534c9c2Swdenk struct stat { 746534c9c2Swdenk unsigned short st_dev; 756534c9c2Swdenk unsigned short __pad1; 766534c9c2Swdenk unsigned long st_ino; 776534c9c2Swdenk unsigned short st_mode; 786534c9c2Swdenk unsigned short st_nlink; 796534c9c2Swdenk unsigned short st_uid; 806534c9c2Swdenk unsigned short st_gid; 816534c9c2Swdenk unsigned short st_rdev; 826534c9c2Swdenk unsigned short __pad2; 836534c9c2Swdenk unsigned long st_size; 846534c9c2Swdenk unsigned long st_blksize; 856534c9c2Swdenk unsigned long st_blocks; 866534c9c2Swdenk unsigned long st_atime; 876534c9c2Swdenk unsigned long __unused1; 886534c9c2Swdenk unsigned long st_mtime; 896534c9c2Swdenk unsigned long __unused2; 906534c9c2Swdenk unsigned long st_ctime; 916534c9c2Swdenk unsigned long __unused3; 926534c9c2Swdenk unsigned long __unused4; 936534c9c2Swdenk unsigned long __unused5; 946534c9c2Swdenk }; 956534c9c2Swdenk 966534c9c2Swdenk #endif /* __ARM__ */ 976534c9c2Swdenk 985c745d26Swdenk #if defined (__MIPS__) 995c745d26Swdenk 1005c745d26Swdenk struct stat { 1015c745d26Swdenk dev_t st_dev; 1025c745d26Swdenk long st_pad1[3]; 1035c745d26Swdenk ino_t st_ino; 1045c745d26Swdenk mode_t st_mode; 1055c745d26Swdenk nlink_t st_nlink; 1065c745d26Swdenk uid_t st_uid; 1075c745d26Swdenk gid_t st_gid; 1085c745d26Swdenk dev_t st_rdev; 1095c745d26Swdenk long st_pad2[2]; 1105c745d26Swdenk off_t st_size; 1115c745d26Swdenk long st_pad3; 1125c745d26Swdenk /* 1135c745d26Swdenk * Actually this should be timestruc_t st_atime, st_mtime and st_ctime 1145c745d26Swdenk * but we don't have it under Linux. 1155c745d26Swdenk */ 1165c745d26Swdenk time_t st_atime; 1175c745d26Swdenk long reserved0; 1185c745d26Swdenk time_t st_mtime; 1195c745d26Swdenk long reserved1; 1205c745d26Swdenk time_t st_ctime; 1215c745d26Swdenk long reserved2; 1225c745d26Swdenk long st_blksize; 1235c745d26Swdenk long st_blocks; 1245c745d26Swdenk long st_pad4[14]; 1255c745d26Swdenk }; 1265c745d26Swdenk 1275c745d26Swdenk #endif /* __MIPS__ */ 1285c745d26Swdenk 129*daab59acSAndy Shevchenko #if defined(__SH__) || defined(__XTENSA__) 1309c0deb5aSHaavard Skinnemoen 1319c0deb5aSHaavard Skinnemoen struct stat { 1329c0deb5aSHaavard Skinnemoen unsigned long st_dev; 1339c0deb5aSHaavard Skinnemoen unsigned long st_ino; 1349c0deb5aSHaavard Skinnemoen unsigned short st_mode; 1359c0deb5aSHaavard Skinnemoen unsigned short st_nlink; 1369c0deb5aSHaavard Skinnemoen unsigned short st_uid; 1379c0deb5aSHaavard Skinnemoen unsigned short st_gid; 1389c0deb5aSHaavard Skinnemoen unsigned long st_rdev; 1399c0deb5aSHaavard Skinnemoen unsigned long st_size; 1409c0deb5aSHaavard Skinnemoen unsigned long st_blksize; 1419c0deb5aSHaavard Skinnemoen unsigned long st_blocks; 1429c0deb5aSHaavard Skinnemoen unsigned long st_atime; 1439c0deb5aSHaavard Skinnemoen unsigned long st_atime_nsec; 1449c0deb5aSHaavard Skinnemoen unsigned long st_mtime; 1459c0deb5aSHaavard Skinnemoen unsigned long st_mtime_nsec; 1469c0deb5aSHaavard Skinnemoen unsigned long st_ctime; 1479c0deb5aSHaavard Skinnemoen unsigned long st_ctime_nsec; 1489c0deb5aSHaavard Skinnemoen unsigned long __unused4; 1499c0deb5aSHaavard Skinnemoen unsigned long __unused5; 1509c0deb5aSHaavard Skinnemoen }; 1519c0deb5aSHaavard Skinnemoen 152*daab59acSAndy Shevchenko #endif /* __SH__ || __XTENSA__ */ 1536534c9c2Swdenk 1546534c9c2Swdenk #ifdef __cplusplus 1556534c9c2Swdenk } 1566534c9c2Swdenk #endif 1576534c9c2Swdenk 1586534c9c2Swdenk #endif 159