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 */ 87struct 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 */ 99struct 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 */ 113struct 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