diff options
| author | Vijay Venkatraman <vijaykv@google.com> | 2017-01-26 01:53:38 +0000 |
|---|---|---|
| committer | android-build-merger <android-build-merger@google.com> | 2017-01-26 01:53:38 +0000 |
| commit | 5a8f555e493803f4bff4a402d36d11b5cd81498f (patch) | |
| tree | 48e161e6b466e8cd139095ecd7d27c269d24844d /libutils/include/utils/Compat.h | |
| parent | 06e9f5de8c9340cdc980d3ce34abd4c5991d7f31 (diff) | |
| parent | a252f11da35e870cb365fdd204f98e7e32cf5a5d (diff) | |
| download | system_core-5a8f555e493803f4bff4a402d36d11b5cd81498f.tar.gz system_core-5a8f555e493803f4bff4a402d36d11b5cd81498f.tar.bz2 system_core-5a8f555e493803f4bff4a402d36d11b5cd81498f.zip | |
Merge "Exporting C++ headers from system/core" am: 812b7d5d52 am: f484dd3401
am: a252f11da3
Change-Id: If2dc2da283db7a60f478c6e61a9e9b32edb42ce7
Diffstat (limited to 'libutils/include/utils/Compat.h')
| -rw-r--r-- | libutils/include/utils/Compat.h | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/libutils/include/utils/Compat.h b/libutils/include/utils/Compat.h new file mode 100644 index 000000000..2709e3b32 --- /dev/null +++ b/libutils/include/utils/Compat.h @@ -0,0 +1,83 @@ +/* + * Copyright (C) 2010 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef __LIB_UTILS_COMPAT_H +#define __LIB_UTILS_COMPAT_H + +#include <unistd.h> + +#if defined(__APPLE__) + +/* Mac OS has always had a 64-bit off_t, so it doesn't have off64_t. */ + +typedef off_t off64_t; + +static inline off64_t lseek64(int fd, off64_t offset, int whence) { + return lseek(fd, offset, whence); +} + +static inline ssize_t pread64(int fd, void* buf, size_t nbytes, off64_t offset) { + return pread(fd, buf, nbytes, offset); +} + +static inline ssize_t pwrite64(int fd, const void* buf, size_t nbytes, off64_t offset) { + return pwrite(fd, buf, nbytes, offset); +} + +#endif /* __APPLE__ */ + +#if defined(_WIN32) +#define O_CLOEXEC O_NOINHERIT +#define O_NOFOLLOW 0 +#define DEFFILEMODE 0666 +#endif /* _WIN32 */ + +#define ZD "%zd" +#define ZD_TYPE ssize_t + +/* + * Needed for cases where something should be constexpr if possible, but not + * being constexpr is fine if in pre-C++11 code (such as a const static float + * member variable). + */ +#if __cplusplus >= 201103L +#define CONSTEXPR constexpr +#else +#define CONSTEXPR +#endif + +/* + * TEMP_FAILURE_RETRY is defined by some, but not all, versions of + * <unistd.h>. (Alas, it is not as standard as we'd hoped!) So, if it's + * not already defined, then define it here. + */ +#ifndef TEMP_FAILURE_RETRY +/* Used to retry syscalls that can return EINTR. */ +#define TEMP_FAILURE_RETRY(exp) ({ \ + typeof (exp) _rc; \ + do { \ + _rc = (exp); \ + } while (_rc == -1 && errno == EINTR); \ + _rc; }) +#endif + +#if defined(_WIN32) +#define OS_PATH_SEPARATOR '\\' +#else +#define OS_PATH_SEPARATOR '/' +#endif + +#endif /* __LIB_UTILS_COMPAT_H */ |
