Blame view

include/asm-generic/fcntl.h 4.41 KB
9317259ea   Stephen Rothwell   [PATCH] Create as...
1
2
  #ifndef _ASM_GENERIC_FCNTL_H
  #define _ASM_GENERIC_FCNTL_H
5ac353f9b   Stephen Rothwell   [PATCH] Clean up ...
3
  #include <linux/types.h>
ecf081d1a   Eric Paris   vfs: introduce FM...
4
5
  /*
   * FMODE_EXEC is 0x20
12ed2e36c   Signed-off-by: Wu Fengguang   fanotify: FMODE_N...
6
   * FMODE_NONOTIFY is 0x1000000
ecf081d1a   Eric Paris   vfs: introduce FM...
7
8
9
10
   * These cannot be used by userspace O_* until internal and external open
   * flags are split.
   * -Eric Paris
   */
454eedb89   Wu Fengguang   vfs: O_* bit numb...
11
12
13
  /*
   * When introducing new O_* bits, please check its uniqueness in fcntl_init().
   */
e64ca97fd   Stephen Rothwell   [PATCH] Clean up ...
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
  #define O_ACCMODE	00000003
  #define O_RDONLY	00000000
  #define O_WRONLY	00000001
  #define O_RDWR		00000002
  #ifndef O_CREAT
  #define O_CREAT		00000100	/* not fcntl */
  #endif
  #ifndef O_EXCL
  #define O_EXCL		00000200	/* not fcntl */
  #endif
  #ifndef O_NOCTTY
  #define O_NOCTTY	00000400	/* not fcntl */
  #endif
  #ifndef O_TRUNC
  #define O_TRUNC		00001000	/* not fcntl */
  #endif
  #ifndef O_APPEND
  #define O_APPEND	00002000
  #endif
  #ifndef O_NONBLOCK
  #define O_NONBLOCK	00004000
  #endif
6b2f3d1f7   Christoph Hellwig   vfs: Implement pr...
36
37
  #ifndef O_DSYNC
  #define O_DSYNC		00010000	/* used to be O_SYNC, see below */
e64ca97fd   Stephen Rothwell   [PATCH] Clean up ...
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
  #endif
  #ifndef FASYNC
  #define FASYNC		00020000	/* fcntl, for BSD compatibility */
  #endif
  #ifndef O_DIRECT
  #define O_DIRECT	00040000	/* direct disk access hint */
  #endif
  #ifndef O_LARGEFILE
  #define O_LARGEFILE	00100000
  #endif
  #ifndef O_DIRECTORY
  #define O_DIRECTORY	00200000	/* must be a directory */
  #endif
  #ifndef O_NOFOLLOW
  #define O_NOFOLLOW	00400000	/* don't follow links */
  #endif
  #ifndef O_NOATIME
  #define O_NOATIME	01000000
  #endif
f23513e8d   Ulrich Drepper   Introduce O_CLOEXEC
57
58
59
  #ifndef O_CLOEXEC
  #define O_CLOEXEC	02000000	/* set close_on_exec */
  #endif
6b2f3d1f7   Christoph Hellwig   vfs: Implement pr...
60
61
  
  /*
76b7e0058   Christoph Hellwig   fix up O_SYNC com...
62
   * Before Linux 2.6.33 only O_DSYNC semantics were implemented, but using
6b2f3d1f7   Christoph Hellwig   vfs: Implement pr...
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
   * the O_SYNC flag.  We continue to use the existing numerical value
   * for O_DSYNC semantics now, but using the correct symbolic name for it.
   * This new value is used to request true Posix O_SYNC semantics.  It is
   * defined in this strange way to make sure applications compiled against
   * new headers get at least O_DSYNC semantics on older kernels.
   *
   * This has the nice side-effect that we can simply test for O_DSYNC
   * wherever we do not care if O_DSYNC or O_SYNC is used.
   *
   * Note: __O_SYNC must never be used directly.
   */
  #ifndef O_SYNC
  #define __O_SYNC	04000000
  #define O_SYNC		(__O_SYNC|O_DSYNC)
  #endif
1abf0c718   Al Viro   New kind of open ...
78
79
80
  #ifndef O_PATH
  #define O_PATH		010000000
  #endif
e64ca97fd   Stephen Rothwell   [PATCH] Clean up ...
81
82
83
  #ifndef O_NDELAY
  #define O_NDELAY	O_NONBLOCK
  #endif
9317259ea   Stephen Rothwell   [PATCH] Create as...
84
85
86
87
88
89
  
  #define F_DUPFD		0	/* dup */
  #define F_GETFD		1	/* get close_on_exec */
  #define F_SETFD		2	/* set/clear close_on_exec */
  #define F_GETFL		3	/* get file->f_flags */
  #define F_SETFL		4	/* set file->f_flags */
1abf62afb   Stephen Rothwell   [PATCH] Clean up ...
90
91
92
93
94
95
96
97
98
99
100
101
102
  #ifndef F_GETLK
  #define F_GETLK		5
  #define F_SETLK		6
  #define F_SETLKW	7
  #endif
  #ifndef F_SETOWN
  #define F_SETOWN	8	/* for sockets. */
  #define F_GETOWN	9	/* for sockets. */
  #endif
  #ifndef F_SETSIG
  #define F_SETSIG	10	/* for sockets. */
  #define F_GETSIG	11	/* for sockets. */
  #endif
71ccb83cf   Peter Zijlstra   alpha: fix F_SETO...
103
104
105
106
107
108
109
110
  
  #ifndef CONFIG_64BIT
  #ifndef F_GETLK64
  #define F_GETLK64	12	/*  using 'struct flock64' */
  #define F_SETLK64	13
  #define F_SETLKW64	14
  #endif
  #endif
ba0a6c9f6   Peter Zijlstra   fcntl: add F_[SG]...
111
  #ifndef F_SETOWN_EX
71ccb83cf   Peter Zijlstra   alpha: fix F_SETO...
112
113
  #define F_SETOWN_EX	15
  #define F_GETOWN_EX	16
ba0a6c9f6   Peter Zijlstra   fcntl: add F_[SG]...
114
115
116
117
  #endif
  
  #define F_OWNER_TID	0
  #define F_OWNER_PID	1
978b4053a   Peter Zijlstra   fcntl: rename F_O...
118
  #define F_OWNER_PGRP	2
ba0a6c9f6   Peter Zijlstra   fcntl: add F_[SG]...
119
120
121
  
  struct f_owner_ex {
  	int	type;
269b8fd5d   Lucian Adrian Grijincu   asm-generic: fcnt...
122
  	__kernel_pid_t	pid;
ba0a6c9f6   Peter Zijlstra   fcntl: add F_[SG]...
123
  };
9317259ea   Stephen Rothwell   [PATCH] Create as...
124
125
126
  
  /* for F_[GET|SET]FL */
  #define FD_CLOEXEC	1	/* actually anything with low bit set goes */
1abf62afb   Stephen Rothwell   [PATCH] Clean up ...
127
128
129
130
131
132
133
134
135
136
137
138
  /* for posix fcntl() and lockf() */
  #ifndef F_RDLCK
  #define F_RDLCK		0
  #define F_WRLCK		1
  #define F_UNLCK		2
  #endif
  
  /* for old implementation of bsd flock () */
  #ifndef F_EXLCK
  #define F_EXLCK		4	/* or 3 */
  #define F_SHLCK		8	/* or 4 */
  #endif
9317259ea   Stephen Rothwell   [PATCH] Create as...
139
140
141
142
143
144
145
146
147
148
149
150
151
  /* operations for bsd flock(), also used by the kernel implementation */
  #define LOCK_SH		1	/* shared lock */
  #define LOCK_EX		2	/* exclusive lock */
  #define LOCK_NB		4	/* or'd with one of the above to prevent
  				   blocking */
  #define LOCK_UN		8	/* remove lock */
  
  #define LOCK_MAND	32	/* This is a mandatory flock ... */
  #define LOCK_READ	64	/* which allows concurrent read operations */
  #define LOCK_WRITE	128	/* which allows concurrent write operations */
  #define LOCK_RW		192	/* which allows concurrent read & write ops */
  
  #define F_LINUX_SPECIFIC_BASE	1024
5ac353f9b   Stephen Rothwell   [PATCH] Clean up ...
152
153
154
155
156
157
158
159
  #ifndef HAVE_ARCH_STRUCT_FLOCK
  #ifndef __ARCH_FLOCK_PAD
  #define __ARCH_FLOCK_PAD
  #endif
  
  struct flock {
  	short	l_type;
  	short	l_whence;
85efde6f4   Arnd Bergmann   make exported hea...
160
161
162
  	__kernel_off_t	l_start;
  	__kernel_off_t	l_len;
  	__kernel_pid_t	l_pid;
5ac353f9b   Stephen Rothwell   [PATCH] Clean up ...
163
164
165
  	__ARCH_FLOCK_PAD
  };
  #endif
8d286aa5e   Stephen Rothwell   [PATCH] Clean up ...
166
  #ifndef CONFIG_64BIT
8d286aa5e   Stephen Rothwell   [PATCH] Clean up ...
167
168
169
170
171
172
173
174
  #ifndef HAVE_ARCH_STRUCT_FLOCK64
  #ifndef __ARCH_FLOCK64_PAD
  #define __ARCH_FLOCK64_PAD
  #endif
  
  struct flock64 {
  	short  l_type;
  	short  l_whence;
85efde6f4   Arnd Bergmann   make exported hea...
175
176
177
  	__kernel_loff_t l_start;
  	__kernel_loff_t l_len;
  	__kernel_pid_t  l_pid;
8d286aa5e   Stephen Rothwell   [PATCH] Clean up ...
178
179
180
181
  	__ARCH_FLOCK64_PAD
  };
  #endif
  #endif /* !CONFIG_64BIT */
9317259ea   Stephen Rothwell   [PATCH] Create as...
182
  #endif /* _ASM_GENERIC_FCNTL_H */