stat.h 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. #ifndef _LINUX_STAT_H
  2. #define _LINUX_STAT_H
  3. #ifdef __KERNEL__
  4. #include <asm/stat.h>
  5. #endif
  6. #if defined(__KERNEL__) || !defined(__GLIBC__) || (__GLIBC__ < 2)
  7. #define S_IFMT 00170000
  8. #define S_IFSOCK 0140000
  9. #define S_IFLNK 0120000
  10. #define S_IFREG 0100000
  11. #define S_IFBLK 0060000
  12. #define S_IFDIR 0040000
  13. #define S_IFCHR 0020000
  14. #define S_IFIFO 0010000
  15. #define S_ISUID 0004000
  16. #define S_ISGID 0002000
  17. #define S_ISVTX 0001000
  18. #define S_ISLNK(m) (((m) & S_IFMT) == S_IFLNK)
  19. #define S_ISREG(m) (((m) & S_IFMT) == S_IFREG)
  20. #define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR)
  21. #define S_ISCHR(m) (((m) & S_IFMT) == S_IFCHR)
  22. #define S_ISBLK(m) (((m) & S_IFMT) == S_IFBLK)
  23. #define S_ISFIFO(m) (((m) & S_IFMT) == S_IFIFO)
  24. #define S_ISSOCK(m) (((m) & S_IFMT) == S_IFSOCK)
  25. #define S_IRWXU 00700
  26. #define S_IRUSR 00400
  27. #define S_IWUSR 00200
  28. #define S_IXUSR 00100
  29. #define S_IRWXG 00070
  30. #define S_IRGRP 00040
  31. #define S_IWGRP 00020
  32. #define S_IXGRP 00010
  33. #define S_IRWXO 00007
  34. #define S_IROTH 00004
  35. #define S_IWOTH 00002
  36. #define S_IXOTH 00001
  37. #endif
  38. #ifdef __KERNEL__
  39. #define S_IRWXUGO (S_IRWXU|S_IRWXG|S_IRWXO)
  40. #define S_IALLUGO (S_ISUID|S_ISGID|S_ISVTX|S_IRWXUGO)
  41. #define S_IRUGO (S_IRUSR|S_IRGRP|S_IROTH)
  42. #define S_IWUGO (S_IWUSR|S_IWGRP|S_IWOTH)
  43. #define S_IXUGO (S_IXUSR|S_IXGRP|S_IXOTH)
  44. #include <linux/types.h>
  45. #include <linux/time.h>
  46. struct kstat {
  47. u64 ino;
  48. dev_t dev;
  49. umode_t mode;
  50. unsigned int nlink;
  51. uid_t uid;
  52. gid_t gid;
  53. dev_t rdev;
  54. loff_t size;
  55. struct timespec atime;
  56. struct timespec mtime;
  57. struct timespec ctime;
  58. unsigned long blksize;
  59. unsigned long long blocks;
  60. };
  61. #endif
  62. #endif