1 /****************************************************************************
2  ****************************************************************************
3  ***
4  ***   This header was automatically generated from a Linux kernel header
5  ***   of the same name, to make information necessary for userspace to
6  ***   call into the kernel available to libc.  It contains only constants,
7  ***   structures, and macros generated from the original header, and thus,
8  ***   contains no copyrightable information.
9  ***
10  ***   To edit the content of this header, modify the corresponding
11  ***   source file (e.g. under external/kernel-headers/original/) then
12  ***   run bionic/libc/kernel/tools/update_all.py
13  ***
14  ***   Any manual change here will be lost the next time this script will
15  ***   be run. You've been warned!
16  ***
17  ****************************************************************************
18  ****************************************************************************/
19 #ifndef _ASM_GENERIC_FCNTL_H
20 #define _ASM_GENERIC_FCNTL_H
21 
22 #include <linux/types.h>
23 #define O_ACCMODE 00000003
24 #define O_RDONLY 00000000
25 #define O_WRONLY 00000001
26 #define O_RDWR 00000002
27 #ifndef O_CREAT
28 #define O_CREAT 00000100
29 #endif
30 #ifndef O_EXCL
31 #define O_EXCL 00000200
32 #endif
33 #ifndef O_NOCTTY
34 #define O_NOCTTY 00000400
35 #endif
36 #ifndef O_TRUNC
37 #define O_TRUNC 00001000
38 #endif
39 #ifndef O_APPEND
40 #define O_APPEND 00002000
41 #endif
42 #ifndef O_NONBLOCK
43 #define O_NONBLOCK 00004000
44 #endif
45 #ifndef O_DSYNC
46 #define O_DSYNC 00010000
47 #endif
48 #ifndef FASYNC
49 #define FASYNC 00020000
50 #endif
51 #ifndef O_DIRECT
52 #define O_DIRECT 00040000
53 #endif
54 #ifndef O_LARGEFILE
55 #define O_LARGEFILE 00100000
56 #endif
57 #ifndef O_DIRECTORY
58 #define O_DIRECTORY 00200000
59 #endif
60 #ifndef O_NOFOLLOW
61 #define O_NOFOLLOW 00400000
62 #endif
63 #ifndef O_NOATIME
64 #define O_NOATIME 01000000
65 #endif
66 #ifndef O_CLOEXEC
67 #define O_CLOEXEC 02000000
68 #endif
69 #ifndef O_SYNC
70 #define __O_SYNC 04000000
71 #define O_SYNC (__O_SYNC | O_DSYNC)
72 #endif
73 #ifndef O_PATH
74 #define O_PATH 010000000
75 #endif
76 #ifndef __O_TMPFILE
77 #define __O_TMPFILE 020000000
78 #endif
79 #define O_TMPFILE (__O_TMPFILE | O_DIRECTORY)
80 #define O_TMPFILE_MASK (__O_TMPFILE | O_DIRECTORY | O_CREAT)
81 #ifndef O_NDELAY
82 #define O_NDELAY O_NONBLOCK
83 #endif
84 #define F_DUPFD 0
85 #define F_GETFD 1
86 #define F_SETFD 2
87 #define F_GETFL 3
88 #define F_SETFL 4
89 #ifndef F_GETLK
90 #define F_GETLK 5
91 #define F_SETLK 6
92 #define F_SETLKW 7
93 #endif
94 #ifndef F_SETOWN
95 #define F_SETOWN 8
96 #define F_GETOWN 9
97 #endif
98 #ifndef F_SETSIG
99 #define F_SETSIG 10
100 #define F_GETSIG 11
101 #endif
102 #ifndef __LP64__
103 #ifndef F_GETLK64
104 #define F_GETLK64 12
105 #define F_SETLK64 13
106 #define F_SETLKW64 14
107 #endif
108 #endif
109 #ifndef F_SETOWN_EX
110 #define F_SETOWN_EX 15
111 #define F_GETOWN_EX 16
112 #endif
113 #ifndef F_GETOWNER_UIDS
114 #define F_GETOWNER_UIDS 17
115 #endif
116 #define F_OFD_GETLK 36
117 #define F_OFD_SETLK 37
118 #define F_OFD_SETLKW 38
119 #define F_OWNER_TID 0
120 #define F_OWNER_PID 1
121 #define F_OWNER_PGRP 2
122 struct f_owner_ex {
123   int type;
124   __kernel_pid_t pid;
125 };
126 #define FD_CLOEXEC 1
127 #ifndef F_RDLCK
128 #define F_RDLCK 0
129 #define F_WRLCK 1
130 #define F_UNLCK 2
131 #endif
132 #ifndef F_EXLCK
133 #define F_EXLCK 4
134 #define F_SHLCK 8
135 #endif
136 #define LOCK_SH 1
137 #define LOCK_EX 2
138 #define LOCK_NB 4
139 #define LOCK_UN 8
140 #define LOCK_MAND 32
141 #define LOCK_READ 64
142 #define LOCK_WRITE 128
143 #define LOCK_RW 192
144 #define F_LINUX_SPECIFIC_BASE 1024
145 #ifndef HAVE_ARCH_STRUCT_FLOCK
146 #ifndef __ARCH_FLOCK_PAD
147 #define __ARCH_FLOCK_PAD
148 #endif
149 
150 struct flock {
151 	short	l_type;
152 	short	l_whence;
153 	__kernel_off_t	l_start;
154 	__kernel_off_t	l_len;
155 	__kernel_pid_t	l_pid;
156 	__ARCH_FLOCK_PAD
157 };
158 #endif
159 #ifndef HAVE_ARCH_STRUCT_FLOCK64
160 #ifndef __ARCH_FLOCK64_PAD
161 #define __ARCH_FLOCK64_PAD
162 #endif
163 
164 struct flock64 {
165 	short  l_type;
166 	short  l_whence;
167 	__kernel_loff_t l_start;
168 	__kernel_loff_t l_len;
169 	__kernel_pid_t  l_pid;
170 	__ARCH_FLOCK64_PAD
171 };
172 #endif
173 #endif
174