• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright 2012, The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *     http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 #ifndef _FCNTL_PORTABLE_H_
18 #define _FCNTL_PORTABLE_H_
19 
20 /* Derived from development/ndk/platforms/android-3/arch-arm/include/asm/fcntl.h */
21 /* NB x86 does not have these and only uses the generic definitions. */
22 #define O_DIRECTORY_PORTABLE    040000
23 #define O_NOFOLLOW_PORTABLE     0100000
24 #define O_DIRECT_PORTABLE       0200000
25 #define O_LARGEFILE_PORTABLE    0400000
26 
27 /* Derived from development/ndk/platforms/android-3/include/asm-generic/fcntl.h */
28 #define O_ACCMODE_PORTABLE  00000003
29 #define O_RDONLY_PORTABLE   00000000
30 #define O_WRONLY_PORTABLE   00000001
31 #define O_RDWR_PORTABLE     00000002
32 #ifndef O_CREAT_PORTABLE
33 #define O_CREAT_PORTABLE    00000100
34 #endif
35 #ifndef O_EXCL_PORTABLE
36 #define O_EXCL_PORTABLE     00000200
37 #endif
38 #ifndef O_NOCTTY_PORTABLE
39 #define O_NOCTTY_PORTABLE   00000400
40 #endif
41 #ifndef O_TRUNC_PORTABLE
42 #define O_TRUNC_PORTABLE    00001000
43 #endif
44 #ifndef O_APPEND_PORTABLE
45 #define O_APPEND_PORTABLE   00002000
46 #endif
47 #ifndef O_NONBLOCK_PORTABLE
48 #define O_NONBLOCK_PORTABLE 00004000
49 #endif
50 #ifndef O_SYNC_PORTABLE
51 #define O_SYNC_PORTABLE     00010000
52 #endif
53 #ifndef FASYNC_PORTABLE
54 #define FASYNC_PORTABLE     00020000
55 #endif
56 #ifndef O_DIRECT_PORTABLE
57 #define O_DIRECT_PORTABLE   00040000
58 #endif
59 #ifndef O_LARGEFILE_PORTABLE
60 #define O_LARGEFILE_PORTABLE    00100000
61 #endif
62 #ifndef O_DIRECTORY_PORTABLE
63 #define O_DIRECTORY_PORTABLE    00200000
64 #endif
65 #ifndef O_NOFOLLOW_PORTABLE
66 #define O_NOFOLLOW_PORTABLE 00400000
67 #endif
68 #ifndef O_NOATIME_PORTABLE
69 #define O_NOATIME_PORTABLE  01000000
70 #endif
71 #ifndef O_NDELAY_PORTABLE
72 #define O_NDELAY_PORTABLE   O_NONBLOCK_PORTABLE
73 #endif
74 
75 /* From Bionic libc/kernel/common/asm-generic/fcntl.h */
76 #ifndef O_CLOEXEC_PORTABLE
77 #define O_CLOEXEC_PORTABLE 02000000
78 #endif
79 
80 #ifndef __ARCH_FLOCK64_PAD
81 #define __ARCH_FLOCK64_PAD
82 #endif
83 
84 /*
85  * For use with F_GETLK and F_SETLK
86  */
87 struct flock_portable {
88    short l_type;
89    short l_whence;
90    off_t l_start;
91    off_t l_len;
92    pid_t l_pid;
93    __ARCH_FLOCK64_PAD
94 };
95 
96 /*
97  * For use with F_GETLK64 and F_SETLK64
98  */
99 struct flock64_portable {
100    short l_type;
101    short l_whence;
102    unsigned char __padding[4];
103    loff_t l_start;
104    loff_t l_len;
105    pid_t l_pid;
106    __ARCH_FLOCK64_PAD
107 };
108 
109 #if 0
110 /*
111  * The X86 Version is
112  */
113 struct flock64 {
114    short l_type;
115    short l_whence;
116    loff_t l_start;
117    loff_t l_len;
118    pid_t l_pid;
119    __ARCH_FLOCK64_PAD
120 };
121 #endif /* 0 */
122 
123 
124 #ifndef F_DUPFD_PORTABLE
125 #define F_DUPFD_PORTABLE 0
126 #define F_GETFD_PORTABLE 1
127 #define F_SETFD_PORTABLE 2
128 #define F_GETFL_PORTABLE 3
129 #define F_SETFL_PORTABLE 4
130 #endif
131 
132 #ifndef F_GETLK_PORTABLE
133 #define F_GETLK_PORTABLE 5
134 #define F_SETLK_PORTABLE 6
135 #define F_SETLKW_PORTABLE 7
136 #endif
137 
138 #ifndef F_SETOWN_PORTABLE
139 #define F_SETOWN_PORTABLE 8
140 #define F_GETOWN_PORTABLE 9
141 #endif
142 
143 #ifndef F_SETSIG_PORTABLE
144 #define F_SETSIG_PORTABLE 10
145 #define F_GETSIG_PORTABLE 11
146 #endif
147 
148 #ifndef F_GETLK64_PORTABLE
149 #define F_GETLK64_PORTABLE 12
150 #define F_SETLK64_PORTABLE 13
151 #define F_SETLKW64_PORTABLE 14
152 #endif
153 
154 /* This constant seems to be the same for all ARCH's */
155 #define F_LINUX_SPECIFIC_BASE_PORTABLE 1024
156 
157 #define F_SETLEASE_PORTABLE             (F_LINUX_SPECIFIC_BASE+0)       /* 1024 */
158 #define F_GETLEASE_PORTABLE             (F_LINUX_SPECIFIC_BASE+1)       /* 1025 */
159 #define F_NOTIFY_PORTABLE               (F_LINUX_SPECIFIC_BASE+2)       /* 1026 */
160 
161 /* Currently these are only supported by X86_64 */
162 #define F_CANCELLK_PORTABLE             (F_LINUX_SPECIFIC_BASE+5)       /* 1029 */
163 #define F_DUPFD_CLOEXEC_PORTABLE        (F_LINUX_SPECIFIC_BASE+6)       /* 1030 */
164 
165 #endif /* _FCNTL_PORTABLE_H */
166