Merge "libc/include: remove easy __ANDROID_API__ tautologies."
This commit is contained in:
commit
b890ff36d1
15 changed files with 21 additions and 94 deletions
|
@ -59,7 +59,7 @@ __BIONIC_FORTIFY_INLINE
|
|||
int open(const char* const __pass_object_size pathname, int flags)
|
||||
__overloadable
|
||||
__clang_error_if(__open_modes_useful(flags), "'open' " __open_too_few_args_error) {
|
||||
#if __ANDROID_API__ >= 17 && __BIONIC_FORTIFY_RUNTIME_CHECKS_ENABLED
|
||||
#if __BIONIC_FORTIFY_RUNTIME_CHECKS_ENABLED
|
||||
return __open_2(pathname, flags);
|
||||
#else
|
||||
return __open_real(pathname, flags);
|
||||
|
@ -83,7 +83,7 @@ __BIONIC_FORTIFY_INLINE
|
|||
int openat(int dirfd, const char* const __pass_object_size pathname, int flags)
|
||||
__overloadable
|
||||
__clang_error_if(__open_modes_useful(flags), "'openat' " __open_too_few_args_error) {
|
||||
#if __ANDROID_API__ >= 17 && __BIONIC_FORTIFY_RUNTIME_CHECKS_ENABLED
|
||||
#if __BIONIC_FORTIFY_RUNTIME_CHECKS_ENABLED
|
||||
return __openat_2(dirfd, pathname, flags);
|
||||
#else
|
||||
return __openat_real(dirfd, pathname, flags);
|
||||
|
@ -98,7 +98,6 @@ int openat(int dirfd, const char* const __pass_object_size pathname, int flags,
|
|||
return __openat_real(dirfd, pathname, flags, modes);
|
||||
}
|
||||
|
||||
#if __ANDROID_API__ >= 21
|
||||
/* Note that open == open64, so we reuse those bits in the open64 variants below. */
|
||||
|
||||
__BIONIC_ERROR_FUNCTION_VISIBILITY
|
||||
|
@ -139,7 +138,6 @@ int openat64(int dirfd, const char* const __pass_object_size pathname, int flags
|
|||
"'openat64' " __open_useless_modes_warning) {
|
||||
return openat(dirfd, pathname, flags, modes);
|
||||
}
|
||||
#endif /* __ANDROID_API__ >= 21 */
|
||||
|
||||
#undef __open_too_many_args_error
|
||||
#undef __open_too_few_args_error
|
||||
|
|
|
@ -54,7 +54,6 @@ int poll(struct pollfd* const fds __pass_object_size, nfds_t fd_count, int timeo
|
|||
return __call_bypassing_fortify(poll)(fds, fd_count, timeout);
|
||||
}
|
||||
|
||||
#if __ANDROID_API__ >= 21
|
||||
__BIONIC_FORTIFY_INLINE
|
||||
int ppoll(struct pollfd* const fds __pass_object_size, nfds_t fd_count, const struct timespec* timeout, const sigset_t* mask)
|
||||
__overloadable
|
||||
|
@ -69,7 +68,6 @@ int ppoll(struct pollfd* const fds __pass_object_size, nfds_t fd_count, const st
|
|||
#endif
|
||||
return __call_bypassing_fortify(ppoll)(fds, fd_count, timeout, mask);
|
||||
}
|
||||
#endif /* __ANDROID_API__ >= 21 */
|
||||
|
||||
#if __ANDROID_API__ >= 28
|
||||
__BIONIC_FORTIFY_INLINE
|
||||
|
|
|
@ -39,7 +39,7 @@ mode_t umask(mode_t mode)
|
|||
__overloadable
|
||||
__enable_if(1, "")
|
||||
__clang_error_if(mode & ~0777, "'umask' called with invalid mode") {
|
||||
#if __ANDROID_API__ >= 18 && __BIONIC_FORTIFY_RUNTIME_CHECKS_ENABLED
|
||||
#if __BIONIC_FORTIFY_RUNTIME_CHECKS_ENABLED
|
||||
return __umask_chk(mode);
|
||||
#else
|
||||
return __umask_real(mode);
|
||||
|
|
|
@ -36,7 +36,7 @@ size_t __fwrite_chk(const void*, size_t, size_t, FILE*, size_t) __INTRODUCED_IN(
|
|||
|
||||
#if defined(__BIONIC_FORTIFY) && !defined(__BIONIC_NO_STDIO_FORTIFY)
|
||||
|
||||
#if __ANDROID_API__ >= 17 && __BIONIC_FORTIFY_RUNTIME_CHECKS_ENABLED
|
||||
#if __BIONIC_FORTIFY_RUNTIME_CHECKS_ENABLED
|
||||
/* No diag -- clang diagnoses misuses of this on its own. */
|
||||
__BIONIC_FORTIFY_INLINE __printflike(3, 0)
|
||||
int vsnprintf(char* const __pass_object_size dest, size_t size, const char* format, va_list ap)
|
||||
|
@ -58,7 +58,7 @@ int sprintf(char* dest, const char* format)
|
|||
"format string will always overflow destination buffer")
|
||||
__errorattr("format string will always overflow destination buffer");
|
||||
|
||||
#if __ANDROID_API__ >= 17 && __BIONIC_FORTIFY_RUNTIME_CHECKS_ENABLED
|
||||
#if __BIONIC_FORTIFY_RUNTIME_CHECKS_ENABLED
|
||||
__BIONIC_FORTIFY_VARIADIC __printflike(2, 3)
|
||||
int sprintf(char* const __pass_object_size dest, const char* format, ...) __overloadable {
|
||||
va_list va;
|
||||
|
@ -126,7 +126,7 @@ char* fgets(char* const __pass_object_size dest, int size, FILE* stream)
|
|||
__clang_error_if(size < 0, "in call to 'fgets', size should not be negative")
|
||||
__clang_error_if(__bos_unevaluated_lt(__bos(dest), size),
|
||||
"in call to 'fgets', size is larger than the destination buffer") {
|
||||
#if __ANDROID_API__ >= 17 && __BIONIC_FORTIFY_RUNTIME_CHECKS_ENABLED
|
||||
#if __BIONIC_FORTIFY_RUNTIME_CHECKS_ENABLED
|
||||
size_t bos = __bos(dest);
|
||||
|
||||
if (!__bos_dynamic_check_impl_and(bos, >=, (size_t)size, size >= 0)) {
|
||||
|
|
|
@ -40,7 +40,7 @@ size_t __strlcat_chk(char*, const char*, size_t, size_t) __INTRODUCED_IN(17);
|
|||
#if defined(__BIONIC_FORTIFY)
|
||||
extern void* __memrchr_real(const void*, int, size_t) __RENAME(memrchr);
|
||||
|
||||
#if __ANDROID_API__ >= 17 && __BIONIC_FORTIFY_RUNTIME_CHECKS_ENABLED
|
||||
#if __BIONIC_FORTIFY_RUNTIME_CHECKS_ENABLED
|
||||
/* No diag -- clang diagnoses misuses of this on its own. */
|
||||
__BIONIC_FORTIFY_INLINE
|
||||
void* memcpy(void* const dst __pass_object_size0, const void* src, size_t copy_amount)
|
||||
|
@ -82,7 +82,7 @@ char* stpcpy(char* const dst __pass_object_size, const char* src)
|
|||
__overloadable
|
||||
__clang_error_if(__bos_unevaluated_le(__bos(dst), __builtin_strlen(src)),
|
||||
"'stpcpy' called with string bigger than buffer") {
|
||||
#if __ANDROID_API__ >= 21 && __BIONIC_FORTIFY_RUNTIME_CHECKS_ENABLED
|
||||
#if __BIONIC_FORTIFY_RUNTIME_CHECKS_ENABLED
|
||||
return __builtin___stpcpy_chk(dst, src, __bos(dst));
|
||||
#else
|
||||
return __builtin_stpcpy(dst, src);
|
||||
|
@ -95,7 +95,7 @@ char* strcpy(char* const dst __pass_object_size, const char* src)
|
|||
__overloadable
|
||||
__clang_error_if(__bos_unevaluated_le(__bos(dst), __builtin_strlen(src)),
|
||||
"'strcpy' called with string bigger than buffer") {
|
||||
#if __ANDROID_API__ >= 17 && __BIONIC_FORTIFY_RUNTIME_CHECKS_ENABLED
|
||||
#if __BIONIC_FORTIFY_RUNTIME_CHECKS_ENABLED
|
||||
return __builtin___strcpy_chk(dst, src, __bos(dst));
|
||||
#else
|
||||
return __builtin_strcpy(dst, src);
|
||||
|
@ -107,14 +107,14 @@ char* strcat(char* const dst __pass_object_size, const char* src)
|
|||
__overloadable
|
||||
__clang_error_if(__bos_unevaluated_le(__bos(dst), __builtin_strlen(src)),
|
||||
"'strcat' called with string bigger than buffer") {
|
||||
#if __ANDROID_API__ >= 17 && __BIONIC_FORTIFY_RUNTIME_CHECKS_ENABLED
|
||||
#if __BIONIC_FORTIFY_RUNTIME_CHECKS_ENABLED
|
||||
return __builtin___strcat_chk(dst, src, __bos(dst));
|
||||
#else
|
||||
return __builtin_strcat(dst, src);
|
||||
#endif
|
||||
}
|
||||
|
||||
#if __ANDROID_API__ >= 17 && __BIONIC_FORTIFY_RUNTIME_CHECKS_ENABLED
|
||||
#if __BIONIC_FORTIFY_RUNTIME_CHECKS_ENABLED
|
||||
/* No diag -- clang diagnoses misuses of this on its own. */
|
||||
__BIONIC_FORTIFY_INLINE
|
||||
char* strncat(char* const dst __pass_object_size, const char* src, size_t n)
|
||||
|
@ -130,7 +130,7 @@ void* memset(void* const s __pass_object_size0, int c, size_t n) __overloadable
|
|||
__diagnose_as_builtin(__builtin_memset, 1, 2, 3)
|
||||
/* If you're a user who wants this warning to go away: use `(&memset)(foo, bar, baz)`. */
|
||||
__clang_warning_if(c && !n, "'memset' will set 0 bytes; maybe the arguments got flipped?") {
|
||||
#if __ANDROID_API__ >= 17 && __BIONIC_FORTIFY_RUNTIME_CHECKS_ENABLED
|
||||
#if __BIONIC_FORTIFY_RUNTIME_CHECKS_ENABLED
|
||||
return __builtin___memset_chk(s, c, n, __bos0(s));
|
||||
#else
|
||||
return __builtin_memset(s, c, n);
|
||||
|
@ -161,7 +161,7 @@ void* __memrchr_fortify(const void* const __pass_object_size s, int c, size_t n)
|
|||
}
|
||||
#endif
|
||||
|
||||
#if __ANDROID_API__ >= 21 && __BIONIC_FORTIFY_RUNTIME_CHECKS_ENABLED
|
||||
#if __BIONIC_FORTIFY_RUNTIME_CHECKS_ENABLED
|
||||
/* No diag -- clang diagnoses misuses of this on its own. */
|
||||
__BIONIC_FORTIFY_INLINE
|
||||
char* stpncpy(char* const dst __pass_object_size, const char* const src __pass_object_size, size_t n)
|
||||
|
@ -200,7 +200,7 @@ size_t strlcpy(char* const dst __pass_object_size, const char* src, size_t size)
|
|||
__overloadable
|
||||
__clang_error_if(__bos_unevaluated_lt(__bos(dst), size),
|
||||
"'strlcpy' called with size bigger than buffer") {
|
||||
#if __ANDROID_API__ >= 17 && __BIONIC_FORTIFY_RUNTIME_CHECKS_ENABLED
|
||||
#if __BIONIC_FORTIFY_RUNTIME_CHECKS_ENABLED
|
||||
return __strlcpy_chk(dst, src, size, __bos(dst));
|
||||
#else
|
||||
return __call_bypassing_fortify(strlcpy)(dst, src, size);
|
||||
|
@ -212,14 +212,14 @@ size_t strlcat(char* const dst __pass_object_size, const char* src, size_t size)
|
|||
__overloadable
|
||||
__clang_error_if(__bos_unevaluated_lt(__bos(dst), size),
|
||||
"'strlcat' called with size bigger than buffer") {
|
||||
#if __ANDROID_API__ >= 17 && __BIONIC_FORTIFY_RUNTIME_CHECKS_ENABLED
|
||||
#if __BIONIC_FORTIFY_RUNTIME_CHECKS_ENABLED
|
||||
return __strlcat_chk(dst, src, size, __bos(dst));
|
||||
#else
|
||||
return __call_bypassing_fortify(strlcat)(dst, src, size);
|
||||
#endif
|
||||
}
|
||||
|
||||
#if __ANDROID_API__ >= 17 && __BIONIC_FORTIFY_RUNTIME_CHECKS_ENABLED
|
||||
#if __BIONIC_FORTIFY_RUNTIME_CHECKS_ENABLED
|
||||
__BIONIC_FORTIFY_INLINE
|
||||
size_t strlen(const char* const s __pass_object_size0) __overloadable {
|
||||
return __strlen_chk(s, __bos0(s));
|
||||
|
@ -228,7 +228,7 @@ size_t strlen(const char* const s __pass_object_size0) __overloadable {
|
|||
|
||||
__BIONIC_FORTIFY_INLINE
|
||||
char* strchr(const char* const s __pass_object_size, int c) __overloadable {
|
||||
#if __ANDROID_API__ >= 18 && __BIONIC_FORTIFY_RUNTIME_CHECKS_ENABLED
|
||||
#if __BIONIC_FORTIFY_RUNTIME_CHECKS_ENABLED
|
||||
size_t bos = __bos(s);
|
||||
|
||||
if (bos != __BIONIC_FORTIFY_UNKNOWN_SIZE) {
|
||||
|
@ -240,7 +240,7 @@ char* strchr(const char* const s __pass_object_size, int c) __overloadable {
|
|||
|
||||
__BIONIC_FORTIFY_INLINE
|
||||
char* strrchr(const char* const s __pass_object_size, int c) __overloadable {
|
||||
#if __ANDROID_API__ >= 18 && __BIONIC_FORTIFY_RUNTIME_CHECKS_ENABLED
|
||||
#if __BIONIC_FORTIFY_RUNTIME_CHECKS_ENABLED
|
||||
size_t bos = __bos(s);
|
||||
|
||||
if (bos != __BIONIC_FORTIFY_UNKNOWN_SIZE) {
|
||||
|
|
|
@ -33,7 +33,7 @@ void __bionic_bcopy(const void *src, void* const dst __pass_object_size0, size_t
|
|||
__overloadable
|
||||
__clang_error_if(__bos_unevaluated_lt(__bos0(dst), len),
|
||||
"'bcopy' called with size bigger than buffer") {
|
||||
#if __ANDROID_API__ >= 17 && __BIONIC_FORTIFY_RUNTIME_CHECKS_ENABLED
|
||||
#if __BIONIC_FORTIFY_RUNTIME_CHECKS_ENABLED
|
||||
size_t bos = __bos0(dst);
|
||||
if (!__bos_trivially_ge(bos, len)) {
|
||||
__builtin___memmove_chk(dst, src, len, bos);
|
||||
|
@ -48,7 +48,7 @@ void __bionic_bzero(void* const b __pass_object_size0, size_t len)
|
|||
__overloadable
|
||||
__clang_error_if(__bos_unevaluated_lt(__bos0(b), len),
|
||||
"'bzero' called with size bigger than buffer") {
|
||||
#if __ANDROID_API__ >= 17 && __BIONIC_FORTIFY_RUNTIME_CHECKS_ENABLED
|
||||
#if __BIONIC_FORTIFY_RUNTIME_CHECKS_ENABLED
|
||||
size_t bos = __bos0(b);
|
||||
if (!__bos_trivially_ge(bos, len)) {
|
||||
__builtin___memset_chk(b, 0, len, bos);
|
||||
|
|
|
@ -152,7 +152,7 @@ ssize_t read(int fd, void* const __pass_object_size0 buf, size_t count)
|
|||
__overloadable
|
||||
__error_if_overflows_ssizet(count, read)
|
||||
__error_if_overflows_objectsize(count, __bos0(buf), read) {
|
||||
#if __ANDROID_API__ >= 21 && __BIONIC_FORTIFY_RUNTIME_CHECKS_ENABLED
|
||||
#if __BIONIC_FORTIFY_RUNTIME_CHECKS_ENABLED
|
||||
size_t bos = __bos0(buf);
|
||||
|
||||
if (!__bos_trivially_ge_no_overflow(bos, count)) {
|
||||
|
@ -192,7 +192,6 @@ ssize_t readlink(const char* path, char* const __pass_object_size buf, size_t si
|
|||
return __call_bypassing_fortify(readlink)(path, buf, size);
|
||||
}
|
||||
|
||||
#if __ANDROID_API__ >= 21
|
||||
__BIONIC_FORTIFY_INLINE
|
||||
ssize_t readlinkat(int dirfd, const char* path, char* const __pass_object_size buf, size_t size)
|
||||
__overloadable
|
||||
|
@ -207,7 +206,6 @@ ssize_t readlinkat(int dirfd, const char* path, char* const __pass_object_size b
|
|||
#endif
|
||||
return __call_bypassing_fortify(readlinkat)(dirfd, path, buf, size);
|
||||
}
|
||||
#endif /* __ANDROID_API__ >= 21 */
|
||||
|
||||
#undef __bos_trivially_ge_no_overflow
|
||||
#undef __enable_if_no_overflow_ssizet
|
||||
|
|
|
@ -84,7 +84,6 @@ __BEGIN_DECLS
|
|||
/** Flag for open(). */
|
||||
#define O_RSYNC O_SYNC
|
||||
|
||||
#if __ANDROID_API__ >= 21
|
||||
/** Flag for splice(). */
|
||||
#define SPLICE_F_MOVE 1
|
||||
/** Flag for splice(). */
|
||||
|
@ -93,7 +92,6 @@ __BEGIN_DECLS
|
|||
#define SPLICE_F_MORE 4
|
||||
/** Flag for splice(). */
|
||||
#define SPLICE_F_GIFT 8
|
||||
#endif
|
||||
|
||||
#if __ANDROID_API__ >= 26
|
||||
/** Flag for sync_file_range(). */
|
||||
|
|
|
@ -58,9 +58,7 @@ enum {
|
|||
#define PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP { { ((PTHREAD_MUTEX_ERRORCHECK & 3) << 14) } }
|
||||
|
||||
#define PTHREAD_COND_INITIALIZER { { 0 } }
|
||||
#if __ANDROID_API__ >= 21
|
||||
#define PTHREAD_COND_INITIALIZER_MONOTONIC_NP { { 1 << 1 } }
|
||||
#endif
|
||||
|
||||
#define PTHREAD_RWLOCK_INITIALIZER { { 0 } }
|
||||
|
||||
|
|
|
@ -136,20 +136,8 @@ int ungetc(int __ch, FILE* __fp);
|
|||
int vfprintf(FILE* __fp, const char* __fmt, va_list __args) __printflike(2, 0);
|
||||
int vprintf(const char* __fp, va_list __args) __printflike(1, 0);
|
||||
|
||||
#if __ANDROID_API__ >= 21
|
||||
int dprintf(int __fd, const char* __fmt, ...) __printflike(2, 3) __INTRODUCED_IN(21);
|
||||
int vdprintf(int __fd, const char* __fmt, va_list __args) __printflike(2, 0) __INTRODUCED_IN(21);
|
||||
#else
|
||||
/*
|
||||
* Old versions of Android called these fdprintf and vfdprintf out of fears that the glibc names
|
||||
* would collide with user debug printfs.
|
||||
*
|
||||
* Allow users to just use dprintf and vfdprintf on any version by renaming those calls to their
|
||||
* legacy equivalents if needed.
|
||||
*/
|
||||
int dprintf(int __fd, const char* __fmt, ...) __RENAME(fdprintf) __printflike(2, 3);
|
||||
int vdprintf(int __fd, const char* __fmt, va_list __args) __RENAME(vfdprintf) __printflike(2, 0);
|
||||
#endif
|
||||
|
||||
#if (defined(__STDC_VERSION__) && __STDC_VERSION__ < 201112L) || \
|
||||
(defined(__cplusplus) && __cplusplus <= 201103L)
|
||||
|
|
|
@ -43,11 +43,7 @@ __BEGIN_DECLS
|
|||
|
||||
__noreturn void abort(void) __attribute__((__nomerge__));
|
||||
__noreturn void exit(int __status);
|
||||
#if __ANDROID_API__ >= 21
|
||||
__noreturn void _Exit(int __status) __INTRODUCED_IN(21);
|
||||
#else
|
||||
__noreturn void _Exit(int) __RENAME(_exit);
|
||||
#endif
|
||||
|
||||
int atexit(void (* _Nonnull __fn)(void));
|
||||
|
||||
|
|
|
@ -40,21 +40,6 @@ __BEGIN_DECLS
|
|||
int epoll_create(int __size);
|
||||
int epoll_create1(int __flags) __INTRODUCED_IN(21);
|
||||
|
||||
/*
|
||||
* Some third-party code uses the existence of EPOLL_CLOEXEC to detect the
|
||||
* availability of epoll_create1. This is not correct, since having up-to-date
|
||||
* UAPI headers says nothing about the C library, but for the time being we
|
||||
* don't want to harm adoption to the unified headers. We'll undef EPOLL_CLOEXEC
|
||||
* if we don't have epoll_create1 for the time being, and maybe revisit this
|
||||
* later.
|
||||
*
|
||||
* https://github.com/android-ndk/ndk/issues/302
|
||||
* https://github.com/android-ndk/ndk/issues/394
|
||||
*/
|
||||
#if __ANDROID_API__ < 21 && defined(EPOLL_CLOEXEC)
|
||||
#undef EPOLL_CLOEXEC
|
||||
#endif
|
||||
|
||||
int epoll_ctl(int __epoll_fd, int __op, int __fd, struct epoll_event* __BIONIC_COMPLICATED_NULLNESS __event);
|
||||
int epoll_wait(int __epoll_fd, struct epoll_event* _Nonnull __events, int __event_count, int __timeout_ms);
|
||||
int epoll_pwait(int __epoll_fd, struct epoll_event* _Nonnull __events, int __event_count, int __timeout_ms, const sigset_t* _Nullable __mask) __INTRODUCED_IN(21);
|
||||
|
|
|
@ -37,21 +37,8 @@
|
|||
|
||||
__BEGIN_DECLS
|
||||
|
||||
/*
|
||||
* Some third-party code uses the existence of IN_CLOEXEC/IN_NONBLOCK to detect
|
||||
* the availability of inotify_init1. This is not correct, since
|
||||
* `syscall(__NR_inotify_init1, IN_CLOEXEC)` is still valid even if the C
|
||||
* library doesn't have that function, but for the time being we don't want to
|
||||
* harm adoption to the unified headers. We'll avoid defining IN_CLOEXEC and
|
||||
* IN_NONBLOCK if we don't have inotify_init1 for the time being, and maybe
|
||||
* revisit this later.
|
||||
*
|
||||
* https://github.com/android-ndk/ndk/issues/394
|
||||
*/
|
||||
#if __ANDROID_API__ >= 21
|
||||
#define IN_CLOEXEC O_CLOEXEC
|
||||
#define IN_NONBLOCK O_NONBLOCK
|
||||
#endif
|
||||
|
||||
int inotify_init(void);
|
||||
int inotify_init1(int __flags) __INTRODUCED_IN(21);
|
||||
|
|
|
@ -79,8 +79,6 @@ int __FD_ISSET_chk(int, const fd_set*, size_t) __INTRODUCED_IN(21);
|
|||
#define __FD_SET(fd, set) (__FDS_BITS(fd_set*,set)[__FDELT(fd)] |= __FDMASK(fd))
|
||||
#define __FD_ISSET(fd, set) ((__FDS_BITS(const fd_set*,set)[__FDELT(fd)] & __FDMASK(fd)) != 0)
|
||||
|
||||
#if __ANDROID_API__ >= 21
|
||||
|
||||
/** Removes `fd` from the given set. Use <poll.h> instead. */
|
||||
#define FD_CLR(fd, set) __FD_CLR_chk(fd, set, __bos(set))
|
||||
/** Adds `fd` to the given set. Use <poll.h> instead. */
|
||||
|
@ -88,17 +86,6 @@ int __FD_ISSET_chk(int, const fd_set*, size_t) __INTRODUCED_IN(21);
|
|||
/** Tests whether `fd` is in the given set. Use <poll.h> instead. */
|
||||
#define FD_ISSET(fd, set) __FD_ISSET_chk(fd, set, __bos(set))
|
||||
|
||||
#else
|
||||
|
||||
/** Removes `fd` from the given set. Use <poll.h> instead. */
|
||||
#define FD_CLR(fd, set) __FD_CLR(fd, set)
|
||||
/** Adds `fd` to the given set. Use <poll.h> instead. */
|
||||
#define FD_SET(fd, set) __FD_SET(fd, set)
|
||||
/** Tests whether `fd` is in the given set. Use <poll.h> instead. */
|
||||
#define FD_ISSET(fd, set) __FD_ISSET(fd, set)
|
||||
|
||||
#endif /* __ANDROID_API >= 21 */
|
||||
|
||||
/**
|
||||
* [select(2)](http://man7.org/linux/man-pages/man2/select.2.html) waits on a
|
||||
* set of file descriptors.
|
||||
|
|
|
@ -303,13 +303,7 @@ int ttyname_r(int __fd, char* _Nonnull __buf, size_t __buf_size);
|
|||
|
||||
int acct(const char* _Nullable __path);
|
||||
|
||||
#if __ANDROID_API__ >= 21
|
||||
int getpagesize(void) __INTRODUCED_IN(21);
|
||||
#else
|
||||
static __inline__ int getpagesize(void) {
|
||||
return sysconf(_SC_PAGESIZE);
|
||||
}
|
||||
#endif
|
||||
|
||||
long syscall(long __number, ...);
|
||||
|
||||
|
|
Loading…
Reference in a new issue