home *** CD-ROM | disk | FTP | other *** search
/ PC Welt 2006 November (DVD) / PCWELT_11_2006.ISO / casper / filesystem.squashfs / usr / src / linux-headers-2.6.17-6 / include / asm-generic / fcntl.h < prev    next >
Encoding:
C/C++ Source or Header  |  2006-08-11  |  3.2 KB  |  149 lines

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