0001
0002 #ifndef _ASM_GENERIC_FCNTL_H
0003 #define _ASM_GENERIC_FCNTL_H
0004
0005 #include <linux/types.h>
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019 #define O_ACCMODE 00000003
0020 #define O_RDONLY 00000000
0021 #define O_WRONLY 00000001
0022 #define O_RDWR 00000002
0023 #ifndef O_CREAT
0024 #define O_CREAT 00000100
0025 #endif
0026 #ifndef O_EXCL
0027 #define O_EXCL 00000200
0028 #endif
0029 #ifndef O_NOCTTY
0030 #define O_NOCTTY 00000400
0031 #endif
0032 #ifndef O_TRUNC
0033 #define O_TRUNC 00001000
0034 #endif
0035 #ifndef O_APPEND
0036 #define O_APPEND 00002000
0037 #endif
0038 #ifndef O_NONBLOCK
0039 #define O_NONBLOCK 00004000
0040 #endif
0041 #ifndef O_DSYNC
0042 #define O_DSYNC 00010000
0043 #endif
0044 #ifndef FASYNC
0045 #define FASYNC 00020000
0046 #endif
0047 #ifndef O_DIRECT
0048 #define O_DIRECT 00040000
0049 #endif
0050 #ifndef O_LARGEFILE
0051 #define O_LARGEFILE 00100000
0052 #endif
0053 #ifndef O_DIRECTORY
0054 #define O_DIRECTORY 00200000
0055 #endif
0056 #ifndef O_NOFOLLOW
0057 #define O_NOFOLLOW 00400000
0058 #endif
0059 #ifndef O_NOATIME
0060 #define O_NOATIME 01000000
0061 #endif
0062 #ifndef O_CLOEXEC
0063 #define O_CLOEXEC 02000000
0064 #endif
0065
0066
0067
0068
0069
0070
0071
0072
0073
0074
0075
0076
0077
0078
0079 #ifndef O_SYNC
0080 #define __O_SYNC 04000000
0081 #define O_SYNC (__O_SYNC|O_DSYNC)
0082 #endif
0083
0084 #ifndef O_PATH
0085 #define O_PATH 010000000
0086 #endif
0087
0088 #ifndef __O_TMPFILE
0089 #define __O_TMPFILE 020000000
0090 #endif
0091
0092
0093 #define O_TMPFILE (__O_TMPFILE | O_DIRECTORY)
0094 #define O_TMPFILE_MASK (__O_TMPFILE | O_DIRECTORY | O_CREAT)
0095
0096 #ifndef O_NDELAY
0097 #define O_NDELAY O_NONBLOCK
0098 #endif
0099
0100 #define F_DUPFD 0
0101 #define F_GETFD 1
0102 #define F_SETFD 2
0103 #define F_GETFL 3
0104 #define F_SETFL 4
0105 #ifndef F_GETLK
0106 #define F_GETLK 5
0107 #define F_SETLK 6
0108 #define F_SETLKW 7
0109 #endif
0110 #ifndef F_SETOWN
0111 #define F_SETOWN 8
0112 #define F_GETOWN 9
0113 #endif
0114 #ifndef F_SETSIG
0115 #define F_SETSIG 10
0116 #define F_GETSIG 11
0117 #endif
0118
0119 #if __BITS_PER_LONG == 32 || defined(__KERNEL__)
0120 #ifndef F_GETLK64
0121 #define F_GETLK64 12
0122 #define F_SETLK64 13
0123 #define F_SETLKW64 14
0124 #endif
0125 #endif
0126
0127 #ifndef F_SETOWN_EX
0128 #define F_SETOWN_EX 15
0129 #define F_GETOWN_EX 16
0130 #endif
0131
0132 #ifndef F_GETOWNER_UIDS
0133 #define F_GETOWNER_UIDS 17
0134 #endif
0135
0136
0137
0138
0139
0140
0141
0142
0143
0144
0145
0146
0147
0148 #define F_OFD_GETLK 36
0149 #define F_OFD_SETLK 37
0150 #define F_OFD_SETLKW 38
0151
0152 #define F_OWNER_TID 0
0153 #define F_OWNER_PID 1
0154 #define F_OWNER_PGRP 2
0155
0156 struct f_owner_ex {
0157 int type;
0158 __kernel_pid_t pid;
0159 };
0160
0161
0162 #define FD_CLOEXEC 1
0163
0164
0165 #ifndef F_RDLCK
0166 #define F_RDLCK 0
0167 #define F_WRLCK 1
0168 #define F_UNLCK 2
0169 #endif
0170
0171
0172 #ifndef F_EXLCK
0173 #define F_EXLCK 4
0174 #define F_SHLCK 8
0175 #endif
0176
0177
0178 #define LOCK_SH 1
0179 #define LOCK_EX 2
0180 #define LOCK_NB 4
0181
0182 #define LOCK_UN 8
0183
0184
0185
0186
0187
0188 #define LOCK_MAND 32
0189 #define LOCK_READ 64
0190 #define LOCK_WRITE 128
0191 #define LOCK_RW 192
0192
0193 #define F_LINUX_SPECIFIC_BASE 1024
0194
0195 #ifndef HAVE_ARCH_STRUCT_FLOCK
0196 struct flock {
0197 short l_type;
0198 short l_whence;
0199 __kernel_off_t l_start;
0200 __kernel_off_t l_len;
0201 __kernel_pid_t l_pid;
0202 #ifdef __ARCH_FLOCK_EXTRA_SYSID
0203 __ARCH_FLOCK_EXTRA_SYSID
0204 #endif
0205 #ifdef __ARCH_FLOCK_PAD
0206 __ARCH_FLOCK_PAD
0207 #endif
0208 };
0209
0210 struct flock64 {
0211 short l_type;
0212 short l_whence;
0213 __kernel_loff_t l_start;
0214 __kernel_loff_t l_len;
0215 __kernel_pid_t l_pid;
0216 #ifdef __ARCH_FLOCK64_PAD
0217 __ARCH_FLOCK64_PAD
0218 #endif
0219 };
0220 #endif
0221
0222 #endif