fcntl.h
上传用户:szlgq88
上传日期:2009-04-28
资源大小:48287k
文件大小:3k
源码类别:

嵌入式Linux

开发平台:

Unix_Linux

  1. #ifndef _ASM_GENERIC_FCNTL_H
  2. #define _ASM_GENERIC_FCNTL_H
  3. #include <linux/config.h>
  4. #include <linux/types.h>
  5. /* open/fcntl - O_SYNC is only implemented on blocks devices and on files
  6.    located on an ext2 file system */
  7. #define O_ACCMODE 00000003
  8. #define O_RDONLY 00000000
  9. #define O_WRONLY 00000001
  10. #define O_RDWR 00000002
  11. #ifndef O_CREAT
  12. #define O_CREAT 00000100 /* not fcntl */
  13. #endif
  14. #ifndef O_EXCL
  15. #define O_EXCL 00000200 /* not fcntl */
  16. #endif
  17. #ifndef O_NOCTTY
  18. #define O_NOCTTY 00000400 /* not fcntl */
  19. #endif
  20. #ifndef O_TRUNC
  21. #define O_TRUNC 00001000 /* not fcntl */
  22. #endif
  23. #ifndef O_APPEND
  24. #define O_APPEND 00002000
  25. #endif
  26. #ifndef O_NONBLOCK
  27. #define O_NONBLOCK 00004000
  28. #endif
  29. #ifndef O_SYNC
  30. #define O_SYNC 00010000
  31. #endif
  32. #ifndef FASYNC
  33. #define FASYNC 00020000 /* fcntl, for BSD compatibility */
  34. #endif
  35. #ifndef O_DIRECT
  36. #define O_DIRECT 00040000 /* direct disk access hint */
  37. #endif
  38. #ifndef O_LARGEFILE
  39. #define O_LARGEFILE 00100000
  40. #endif
  41. #ifndef O_DIRECTORY
  42. #define O_DIRECTORY 00200000 /* must be a directory */
  43. #endif
  44. #ifndef O_NOFOLLOW
  45. #define O_NOFOLLOW 00400000 /* don't follow links */
  46. #endif
  47. #ifndef O_NOATIME
  48. #define O_NOATIME 01000000
  49. #endif
  50. #ifndef O_NDELAY
  51. #define O_NDELAY O_NONBLOCK
  52. #endif
  53. #define F_DUPFD 0 /* dup */
  54. #define F_GETFD 1 /* get close_on_exec */
  55. #define F_SETFD 2 /* set/clear close_on_exec */
  56. #define F_GETFL 3 /* get file->f_flags */
  57. #define F_SETFL 4 /* set file->f_flags */
  58. #ifndef F_GETLK
  59. #define F_GETLK 5
  60. #define F_SETLK 6
  61. #define F_SETLKW 7
  62. #endif
  63. #ifndef F_SETOWN
  64. #define F_SETOWN 8 /* for sockets. */
  65. #define F_GETOWN 9 /* for sockets. */
  66. #endif
  67. #ifndef F_SETSIG
  68. #define F_SETSIG 10 /* for sockets. */
  69. #define F_GETSIG 11 /* for sockets. */
  70. #endif
  71. /* for F_[GET|SET]FL */
  72. #define FD_CLOEXEC 1 /* actually anything with low bit set goes */
  73. /* for posix fcntl() and lockf() */
  74. #ifndef F_RDLCK
  75. #define F_RDLCK 0
  76. #define F_WRLCK 1
  77. #define F_UNLCK 2
  78. #endif
  79. /* for old implementation of bsd flock () */
  80. #ifndef F_EXLCK
  81. #define F_EXLCK 4 /* or 3 */
  82. #define F_SHLCK 8 /* or 4 */
  83. #endif
  84. /* for leases */
  85. #ifndef F_INPROGRESS
  86. #define F_INPROGRESS 16
  87. #endif
  88. /* operations for bsd flock(), also used by the kernel implementation */
  89. #define LOCK_SH 1 /* shared lock */
  90. #define LOCK_EX 2 /* exclusive lock */
  91. #define LOCK_NB 4 /* or'd with one of the above to prevent
  92.    blocking */
  93. #define LOCK_UN 8 /* remove lock */
  94. #define LOCK_MAND 32 /* This is a mandatory flock ... */
  95. #define LOCK_READ 64 /* which allows concurrent read operations */
  96. #define LOCK_WRITE 128 /* which allows concurrent write operations */
  97. #define LOCK_RW 192 /* which allows concurrent read & write ops */
  98. #define F_LINUX_SPECIFIC_BASE 1024
  99. #ifndef HAVE_ARCH_STRUCT_FLOCK
  100. #ifndef __ARCH_FLOCK_PAD
  101. #define __ARCH_FLOCK_PAD
  102. #endif
  103. struct flock {
  104. short l_type;
  105. short l_whence;
  106. off_t l_start;
  107. off_t l_len;
  108. pid_t l_pid;
  109. __ARCH_FLOCK_PAD
  110. };
  111. #endif
  112. #ifndef CONFIG_64BIT
  113. #ifndef F_GETLK64
  114. #define F_GETLK64 12 /*  using 'struct flock64' */
  115. #define F_SETLK64 13
  116. #define F_SETLKW64 14
  117. #endif
  118. #ifndef HAVE_ARCH_STRUCT_FLOCK64
  119. #ifndef __ARCH_FLOCK64_PAD
  120. #define __ARCH_FLOCK64_PAD
  121. #endif
  122. struct flock64 {
  123. short  l_type;
  124. short  l_whence;
  125. loff_t l_start;
  126. loff_t l_len;
  127. pid_t  l_pid;
  128. __ARCH_FLOCK64_PAD
  129. };
  130. #endif
  131. #endif /* !CONFIG_64BIT */
  132. #endif /* _ASM_GENERIC_FCNTL_H */