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 #include <linux/types.h>
22 #define O_ACCMODE 00000003
23 #define O_RDONLY 00000000
24 #define O_WRONLY 00000001
25 #define O_RDWR 00000002
26 #ifndef O_CREAT
27 #define O_CREAT 00000100
28 #endif
29 #ifndef O_EXCL
30 #define O_EXCL 00000200
31 #endif
32 #ifndef O_NOCTTY
33 #define O_NOCTTY 00000400
34 #endif
35 #ifndef O_TRUNC
36 #define O_TRUNC 00001000
37 #endif
38 #ifndef O_APPEND
39 #define O_APPEND 00002000
40 #endif
41 #ifndef O_NONBLOCK
42 #define O_NONBLOCK 00004000
43 #endif
44 #ifndef O_DSYNC
45 #define O_DSYNC 00010000
46 #endif
47 #ifndef FASYNC
48 #define FASYNC 00020000
49 #endif
50 #ifndef O_DIRECT
51 #define O_DIRECT 00040000
52 #endif
53 #ifndef O_LARGEFILE
54 #define O_LARGEFILE 00100000
55 #endif
56 #ifndef O_DIRECTORY
57 #define O_DIRECTORY 00200000
58 #endif
59 #ifndef O_NOFOLLOW
60 #define O_NOFOLLOW 00400000
61 #endif
62 #ifndef O_NOATIME
63 #define O_NOATIME 01000000
64 #endif
65 #ifndef O_CLOEXEC
66 #define O_CLOEXEC 02000000
67 #endif
68 #ifndef O_SYNC
69 #define __O_SYNC 04000000
70 #define O_SYNC (__O_SYNC | O_DSYNC)
71 #endif
72 #ifndef O_PATH
73 #define O_PATH 010000000
74 #endif
75 #ifndef __O_TMPFILE
76 #define __O_TMPFILE 020000000
77 #endif
78 #define O_TMPFILE (__O_TMPFILE | O_DIRECTORY)
79 #define O_TMPFILE_MASK (__O_TMPFILE | O_DIRECTORY | O_CREAT)
80 #ifndef O_NDELAY
81 #define O_NDELAY O_NONBLOCK
82 #endif
83 #define F_DUPFD 0
84 #define F_GETFD 1
85 #define F_SETFD 2
86 #define F_GETFL 3
87 #define F_SETFL 4
88 #ifndef F_GETLK
89 #define F_GETLK 5
90 #define F_SETLK 6
91 #define F_SETLKW 7
92 #endif
93 #ifndef F_SETOWN
94 #define F_SETOWN 8
95 #define F_GETOWN 9
96 #endif
97 #ifndef F_SETSIG
98 #define F_SETSIG 10
99 #define F_GETSIG 11
100 #endif
101 #ifndef __LP64__
102 #ifndef F_GETLK64
103 #define F_GETLK64 12
104 #define F_SETLK64 13
105 #define F_SETLKW64 14
106 #endif
107 #endif
108 #ifndef F_SETOWN_EX
109 #define F_SETOWN_EX 15
110 #define F_GETOWN_EX 16
111 #endif
112 #ifndef F_GETOWNER_UIDS
113 #define F_GETOWNER_UIDS 17
114 #endif
115 #define F_OFD_GETLK 36
116 #define F_OFD_SETLK 37
117 #define F_OFD_SETLKW 38
118 #define F_OWNER_TID 0
119 #define F_OWNER_PID 1
120 #define F_OWNER_PGRP 2
121 struct f_owner_ex {
122   int type;
123   __kernel_pid_t pid;
124 };
125 #define FD_CLOEXEC 1
126 #ifndef F_RDLCK
127 #define F_RDLCK 0
128 #define F_WRLCK 1
129 #define F_UNLCK 2
130 #endif
131 #ifndef F_EXLCK
132 #define F_EXLCK 4
133 #define F_SHLCK 8
134 #endif
135 #define LOCK_SH 1
136 #define LOCK_EX 2
137 #define LOCK_NB 4
138 #define LOCK_UN 8
139 #define LOCK_MAND 32
140 #define LOCK_READ 64
141 #define LOCK_WRITE 128
142 #define LOCK_RW 192
143 #define F_LINUX_SPECIFIC_BASE 1024
144 #ifndef HAVE_ARCH_STRUCT_FLOCK
145 #ifndef __ARCH_FLOCK_PAD
146 #define __ARCH_FLOCK_PAD
147 #endif
148 struct flock {
149   short l_type;
150   short l_whence;
151   __kernel_off_t l_start;
152   __kernel_off_t l_len;
153   __kernel_pid_t l_pid;
154   __ARCH_FLOCK_PAD
155 };
156 #endif
157 #ifndef HAVE_ARCH_STRUCT_FLOCK64
158 #ifndef __ARCH_FLOCK64_PAD
159 #define __ARCH_FLOCK64_PAD
160 #endif
161 struct flock64 {
162   short l_type;
163   short l_whence;
164   __kernel_loff_t l_start;
165   __kernel_loff_t l_len;
166   __kernel_pid_t l_pid;
167   __ARCH_FLOCK64_PAD
168 };
169 #endif
170 #endif
171