Green shading in the line number column means the source is part of the translation unit, red means it is conditionally excluded. Highlighted line numbers link to the translation unit page. Highlighted macros link to the macro page.
1: #ifndef _ASM_GENERIC_FCNTL_H 2: #define _ASM_GENERIC_FCNTL_H 3: 4: #include <linux/types.h> 5: 6: /* 7: * FMODE_EXEC is 0x20 8: * FMODE_NONOTIFY is 0x1000000 9: * These cannot be used by userspace O_* until internal and external open 10: * flags are split. 11: * -Eric Paris 12: */ 13: 14: /* 15: * When introducing new O_* bits, please check its uniqueness in fcntl_init(). 16: */ 17: 18: #define O_ACCMODE 00000003 19: #define O_RDONLY 00000000 20: #define O_WRONLY 00000001 21: #define O_RDWR 00000002 22: #ifndef O_CREAT 23: #define O_CREAT 00000100 /* not fcntl */ 24: #endif 25: #ifndef O_EXCL 26: #define O_EXCL 00000200 /* not fcntl */ 27: #endif 28: #ifndef O_NOCTTY 29: #define O_NOCTTY 00000400 /* not fcntl */ 30: #endif 31: #ifndef O_TRUNC 32: #define O_TRUNC 00001000 /* not fcntl */ 33: #endif 34: #ifndef O_APPEND 35: #define O_APPEND 00002000 36: #endif 37: #ifndef O_NONBLOCK 38: #define O_NONBLOCK 00004000 39: #endif 40: #ifndef O_DSYNC 41: #define O_DSYNC 00010000 /* used to be O_SYNC, see below */ 42: #endif 43: #ifndef FASYNC 44: #define FASYNC 00020000 /* fcntl, for BSD compatibility */ 45: #endif 46: #ifndef O_DIRECT 47: #define O_DIRECT 00040000 /* direct disk access hint */ 48: #endif 49: #ifndef O_LARGEFILE 50: #define O_LARGEFILE 00100000 51: #endif 52: #ifndef O_DIRECTORY 53: #define O_DIRECTORY 00200000 /* must be a directory */ 54: #endif 55: #ifndef O_NOFOLLOW 56: #define O_NOFOLLOW 00400000 /* don't follow links */ 57: #endif 58: #ifndef O_NOATIME 59: #define O_NOATIME 01000000 60: #endif 61: #ifndef O_CLOEXEC 62: #define O_CLOEXEC 02000000 /* set close_on_exec */ 63: #endif 64: 65: /* 66: * Before Linux 2.6.33 only O_DSYNC semantics were implemented, but using 67: * the O_SYNC flag. We continue to use the existing numerical value 68: * for O_DSYNC semantics now, but using the correct symbolic name for it. 69: * This new value is used to request true Posix O_SYNC semantics. It is 70: * defined in this strange way to make sure applications compiled against 71: * new headers get at least O_DSYNC semantics on older kernels. 72: * 73: * This has the nice side-effect that we can simply test for O_DSYNC 74: * wherever we do not care if O_DSYNC or O_SYNC is used. 75: * 76: * Note: __O_SYNC must never be used directly. 77: */ 78: #ifndef O_SYNC 79: #define __O_SYNC 04000000 80: #define O_SYNC (__O_SYNC|O_DSYNC) 81: #endif 82: 83: #ifndef O_PATH 84: #define O_PATH 010000000 85: #endif 86: 87: #ifndef __O_TMPFILE 88: #define __O_TMPFILE 020000000 89: #endif 90: 91: /* a horrid kludge trying to make sure that this will fail on old kernels */ 92: #define O_TMPFILE (__O_TMPFILE | O_DIRECTORY) 93: #define O_TMPFILE_MASK (__O_TMPFILE | O_DIRECTORY | O_CREAT) 94: 95: #ifndef O_NDELAY 96: #define O_NDELAY O_NONBLOCK 97: #endif 98: 99: #define F_DUPFD 0 /* dup */ 100: #define F_GETFD 1 /* get close_on_exec */ 101: #define F_SETFD 2 /* set/clear close_on_exec */ 102: #define F_GETFL 3 /* get file->f_flags */ 103: #define F_SETFL 4 /* set file->f_flags */ 104: #ifndef F_GETLK 105: #define F_GETLK 5 106: #define F_SETLK 6 107: #define F_SETLKW 7 108: #endif 109: #ifndef F_SETOWN 110: #define F_SETOWN 8 /* for sockets. */ 111: #define F_GETOWN 9 /* for sockets. */ 112: #endif 113: #ifndef F_SETSIG 114: #define F_SETSIG 10 /* for sockets. */ 115: #define F_GETSIG 11 /* for sockets. */ 116: #endif 117: 118: #ifndef CONFIG_64BIT 119: #ifndef F_GETLK64 120: #define F_GETLK64 12 /* using 'struct flock64' */ 121: #define F_SETLK64 13 122: #define F_SETLKW64 14 123: #endif 124: #endif 125: 126: #ifndef F_SETOWN_EX 127: #define F_SETOWN_EX 15 128: #define F_GETOWN_EX 16 129: #endif 130: 131: #ifndef F_GETOWNER_UIDS 132: #define F_GETOWNER_UIDS 17 133: #endif 134: 135: #define F_OWNER_TID 0 136: #define F_OWNER_PID 1 137: #define F_OWNER_PGRP 2 138: 139: struct f_owner_ex { 140: int type; 141: __kernel_pid_t pid; 142: }; 143: 144: /* for F_[GET|SET]FL */ 145: #define FD_CLOEXEC 1 /* actually anything with low bit set goes */ 146: 147: /* for posix fcntl() and lockf() */ 148: #ifndef F_RDLCK 149: #define F_RDLCK 0 150: #define F_WRLCK 1 151: #define F_UNLCK 2 152: #endif 153: 154: /* for old implementation of bsd flock () */ 155: #ifndef F_EXLCK 156: #define F_EXLCK 4 /* or 3 */ 157: #define F_SHLCK 8 /* or 4 */ 158: #endif 159: 160: /* operations for bsd flock(), also used by the kernel implementation */ 161: #define LOCK_SH 1 /* shared lock */ 162: #define LOCK_EX 2 /* exclusive lock */ 163: #define LOCK_NB 4 /* or'd with one of the above to prevent 164: blocking */ 165: #define LOCK_UN 8 /* remove lock */ 166: 167: #define LOCK_MAND 32 /* This is a mandatory flock ... */ 168: #define LOCK_READ 64 /* which allows concurrent read operations */ 169: #define LOCK_WRITE 128 /* which allows concurrent write operations */ 170: #define LOCK_RW 192 /* which allows concurrent read & write ops */ 171: 172: #define F_LINUX_SPECIFIC_BASE 1024 173: 174: #ifndef HAVE_ARCH_STRUCT_FLOCK 175: #ifndef __ARCH_FLOCK_PAD 176: #define __ARCH_FLOCK_PAD 177: #endif 178: 179: struct flock { 180: short l_type; 181: short l_whence; 182: __kernel_off_t l_start; 183: __kernel_off_t l_len; 184: __kernel_pid_t l_pid; 185: __ARCH_FLOCK_PAD 186: }; 187: #endif 188: 189: #ifndef CONFIG_64BIT 190: 191: #ifndef HAVE_ARCH_STRUCT_FLOCK64 192: #ifndef __ARCH_FLOCK64_PAD 193: #define __ARCH_FLOCK64_PAD 194: #endif 195: 196: struct flock64 { 197: short l_type; 198: short l_whence; 199: __kernel_loff_t l_start; 200: __kernel_loff_t l_len; 201: __kernel_pid_t l_pid; 202: __ARCH_FLOCK64_PAD 203: }; 204: #endif 205: #endif /* !CONFIG_64BIT */ 206: 207: #endif /* _ASM_GENERIC_FCNTL_H */ 208: