Skip to content

Commit 84d1d8a

Browse files
committed
tools include uapi asm-generic: Grab a copy of fcntl.h
We'll need defines for beautifying fcntl arguments that are not available in older distros, these: trace/beauty/fcntl.c: In function 'syscall_arg__scnprintf_fcntl_arg': trace/beauty/fcntl.c:93: error: 'F_OFD_SETLK' undeclared (first use in this function) trace/beauty/fcntl.c:93: error: (Each undeclared identifier is reported only once trace/beauty/fcntl.c:93: error: for each function it appears in.) trace/beauty/fcntl.c:93: error: 'F_OFD_SETLKW' undeclared (first use in this function) trace/beauty/fcntl.c:93: error: 'F_OFD_GETLK' undeclared (first use in this function) trace/beauty/fcntl.c:94: error: 'F_GETOWN_EX' undeclared (first use in this function) trace/beauty/fcntl.c:94: error: 'F_SETOWN_EX' undeclared (first use in this function) Cc: Adrian Hunter <[email protected]> Cc: David Ahern <[email protected]> Cc: Jiri Olsa <[email protected]> Cc: Namhyung Kim <[email protected]> Cc: Wang Nan <[email protected]> Link: http://lkml.kernel.org/n/[email protected] Signed-off-by: Arnaldo Carvalho de Melo <[email protected]>
1 parent 5dde91e commit 84d1d8a

File tree

1 file changed

+220
-0
lines changed
  • tools/include/uapi/asm-generic

1 file changed

+220
-0
lines changed
Lines changed: 220 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,220 @@
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 0x4000000
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+
/*
136+
* Open File Description Locks
137+
*
138+
* Usually record locks held by a process are released on *any* close and are
139+
* not inherited across a fork().
140+
*
141+
* These cmd values will set locks that conflict with process-associated
142+
* record locks, but are "owned" by the open file description, not the
143+
* process. This means that they are inherited across fork() like BSD (flock)
144+
* locks, and they are only released automatically when the last reference to
145+
* the the open file against which they were acquired is put.
146+
*/
147+
#define F_OFD_GETLK 36
148+
#define F_OFD_SETLK 37
149+
#define F_OFD_SETLKW 38
150+
151+
#define F_OWNER_TID 0
152+
#define F_OWNER_PID 1
153+
#define F_OWNER_PGRP 2
154+
155+
struct f_owner_ex {
156+
int type;
157+
__kernel_pid_t pid;
158+
};
159+
160+
/* for F_[GET|SET]FL */
161+
#define FD_CLOEXEC 1 /* actually anything with low bit set goes */
162+
163+
/* for posix fcntl() and lockf() */
164+
#ifndef F_RDLCK
165+
#define F_RDLCK 0
166+
#define F_WRLCK 1
167+
#define F_UNLCK 2
168+
#endif
169+
170+
/* for old implementation of bsd flock () */
171+
#ifndef F_EXLCK
172+
#define F_EXLCK 4 /* or 3 */
173+
#define F_SHLCK 8 /* or 4 */
174+
#endif
175+
176+
/* operations for bsd flock(), also used by the kernel implementation */
177+
#define LOCK_SH 1 /* shared lock */
178+
#define LOCK_EX 2 /* exclusive lock */
179+
#define LOCK_NB 4 /* or'd with one of the above to prevent
180+
blocking */
181+
#define LOCK_UN 8 /* remove lock */
182+
183+
#define LOCK_MAND 32 /* This is a mandatory flock ... */
184+
#define LOCK_READ 64 /* which allows concurrent read operations */
185+
#define LOCK_WRITE 128 /* which allows concurrent write operations */
186+
#define LOCK_RW 192 /* which allows concurrent read & write ops */
187+
188+
#define F_LINUX_SPECIFIC_BASE 1024
189+
190+
#ifndef HAVE_ARCH_STRUCT_FLOCK
191+
#ifndef __ARCH_FLOCK_PAD
192+
#define __ARCH_FLOCK_PAD
193+
#endif
194+
195+
struct flock {
196+
short l_type;
197+
short l_whence;
198+
__kernel_off_t l_start;
199+
__kernel_off_t l_len;
200+
__kernel_pid_t l_pid;
201+
__ARCH_FLOCK_PAD
202+
};
203+
#endif
204+
205+
#ifndef HAVE_ARCH_STRUCT_FLOCK64
206+
#ifndef __ARCH_FLOCK64_PAD
207+
#define __ARCH_FLOCK64_PAD
208+
#endif
209+
210+
struct flock64 {
211+
short l_type;
212+
short l_whence;
213+
__kernel_loff_t l_start;
214+
__kernel_loff_t l_len;
215+
__kernel_pid_t l_pid;
216+
__ARCH_FLOCK64_PAD
217+
};
218+
#endif
219+
220+
#endif /* _ASM_GENERIC_FCNTL_H */

0 commit comments

Comments
 (0)